本节我们来学习一下SpringBoot整合mybatis。
1、准备依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、配置JDBC
在application.properties中配置JDBC的相关参数
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=12345
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3、准备数据库表
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`age` int(3) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
4、编写mapper
根据用户表定义用户实体
package com.springbootdemo10.model;
/**
* @author 小吉
* @description 用户实体
* @date 2020/6/9
*/
public class User {
private Long id;
private String name;
private int age;
//getter/setter省略
}
/**
* @author 小吉
* @description
* @date 2020/6/9
*/
public interface UserMapper {
@Select("SELECT ID,NAME,AGE FROM T_USER WHERE NAME = #{name}")
User findByName(@Param("name") String name);
@Insert("INSERT INTO T_USER(NAME, AGE) VALUES(#{name}, #{age})")
int insert(@Param("name") String name, @Param("age") Integer age);
}
5、单元测试
springboot启动类上需要加上注解**@MapperScan**,并指定需要扫描的mapper。如果不加上该注解,在进行数据库操作将报错,因为无法找到mapper。
/**
* @author 小吉
* @description springboot启动类
* @date 2020/6/9
*/
@MapperScan("com.springbootdemo10.mapper")
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class,args);
}
}
/**
* @author 小吉
* @description springboot整合mybatis
* @date 2020/6/9
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert(){
userMapper.insert("小猪",6);
}
@Test
public void testFindByName(){
User user = userMapper.findByName("小黄");
System.out.println("name:" + user.getName() + ",age:" + user.getAge());
}
}
1)不加注解**@MapperScan**的情况
2)加上注解**@MapperScan**的情况
插入记录成功
查询记录成功
6、分页插件封装
分页插件我在这里使用的是PageHelper,它是一款开源免费的mybatis第三方分页插件。支持常用的12种数据库,mysql、oracle、DB2等等。这里我来演练一下该插件如何在SpringBoot中使用。
6.1 准备依赖
<!-- pagehelper依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
6.2 配置PageHelper
logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true
6.3 编写Mapper
/**
* @author 小吉
* @description
* @date 2020/6/9
*/
public interface UserMapper {
@Select("SELECT ID,NAME,AGE FROM T_USER")
List<User> findUserList();
}
6.4 单元测试
/**
* @author 小吉
* @description springboot整合mybatis
* @date 2020/6/9
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testPage(){
int page = 1;
int size = 2;
PageHelper.startPage(page, size);
List<User> list = userMapper.findUserList();
PageInfo<User> pageInfo = new PageInfo<User>(list);
System.out.println("总记录数:" + pageInfo.getTotal());
for(User user : pageInfo.getList()){
System.out.println("name:" + user.getName() + ",age:" + user.getAge());
}
}
}