十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言
六安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
今天学习下SpringBoot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的。今天先了解下基于注解的mybatis集成。下面话不多说了,来一起看看详细的介绍吧
因为是mybatis嘛,肯定是要有mybatis相关的,同时用的是MySQL,所以也需要引入mysql相关的。
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java 8.0.11
这里创建了一个User的model,这样方便与数据库的表对照,这里在mysql中创建了一个名为mybatis的数据库,里面创建了一个user的表.同时创建了枚举类UserSexEnum.
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
package com.example.model;
import java.io.Serializable;
public class User implements Serializable{
@Override
public String toString() {
// TODO Auto-generated method stub
return "User [id=" + Id + ", name=" + Name + ", age=" + Age + "]";
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
private int Id;
private String Name;
private int Age;
private UserSexEnum Sex;
public UserSexEnum getSex() {
return Sex;
}
public void setSex(UserSexEnum sex) {
Sex = sex;
}
}package com.example.model;
public enum UserSexEnum {
MAN, WOMAN
}这里需要把model与操作数据库的sql对照起来,用什么对照呢?那就需要创建一个mapper.这里有增删改查。
package com.example.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.example.model.*;;
public interface UserMapper {
@Select("SELECT * FROM user")
@Results({
@Result(property = "Sex", column = "sex", javaType = UserSexEnum.class),
@Result(property = "Name", column = "name")
})
List getAll();
@Select("SELECT * FROM user WHERE id = #{id}")
@Results({
@Result(property = "Sex", column = "sex", javaType = UserSexEnum.class),
@Result(property = "Name", column = "name")
})
User getOne(int id);
@Insert("INSERT INTO user(name,age,sex) VALUES(#{name}, #{age}, #{sex})")
void insert(User user);
@Update("UPDATE user SET name=#{userName},age=#{age} WHERE id =#{id}")
void update(User user);
@Delete("DELETE FROM user WHERE id =#{id}")
void delete(int id);
} 上面配置了mapper,那怎么让系统知道mapper放在哪里呢?于是有了@MapperScan注解。
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}这里创建了UserController,一个是显示所有用户,一个是新增一个用户之后再显示所有用户。
package com.example.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.mapper.UserMapper;
import com.example.model.User;
import com.example.model.UserSexEnum;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping(value = "/alluser.do",method = RequestMethod.GET)
public String getallusers(Model model) {
List users=userMapper.getAll();
model.addAttribute("users", users);
return "userlist";
}
@RequestMapping(value = "/insert.do",method = RequestMethod.GET)
public String adduser(Model model) {
User user=new User();
user.setName("cuiyw");
user.setAge(27);
user.setSex(UserSexEnum.MAN);
userMapper.insert(user);
List users=userMapper.getAll();
model.addAttribute("users", users);
return "userlist";
}
} 上面mapper也设置了,model也设置了,那要与数据库交互,肯定要配置数据库地址这些信息吧。这里在运行的时候还报了一个错误.nested exception is java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.在mysql中设置了下时区:set global time_zone='+8:00';
spring.mvc.view.prefix=/view/ spring.mvc.view.suffix=.jsp mybatis.type-aliases-package=com.example.model spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver spring.datasource.url = jdbc:mysql://localhost:3306/mybatis spring.datasource.username = root spring.datasource.password = 123456
七、创建页面显示
这里还是按照上一博客用jsp显示数据。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>Insert title here
| 名字 | 年龄 | 性别 |
|---|---|---|
| ${item.name} | ${item.age} | ${item.sex} |
这里先在浏览器打开http://localhost:8080/user/alluser.do,可以看到用户列表,然后输入http://localhost:8080/user/insert.do,就会看到列表显示多了一行数据。

使用基于注解的集成mybatis比较省事方便,但有利有弊,对于多表相连的可能就不太方便,使用基于xml配置的可能就更会好些。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对创新互联的支持。