1、Maven添加依赖
<!--Spring Web用,非集成MyBatis必须-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--单元测试用,非集成MyBatis必须-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<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>
<version>5.1.40</version>
</dependency>
2、application.properties文件添加数据源信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/share_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=share
spring.datasource.password=share123
#更多配置请参见:https://docs.spring.io/spring-boot/docs/2.2.0.BUILD-SNAPSHOT/reference/html/appendix.html#appendix
3、创建数据库表并添加一条数据
create table if not exists sys_user
(
ID varchar(20) not null comment '主键'
primary key,
USERNAME varchar(50) null comment '用户名'
)
;
4、创建User实体
public class User {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
5、创建UserMapper接口
@Mapper//这里要生效需要在启动类添加@MapperScan
public interface UserMapper {
@Select("SELECT * FROM sys_user") //@Select这里仅演示查询,其他操作同理
List<User> get();
}
6、启动类添加@MapperScan
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.example.demo")//让Spring自动扫描到@Mapper注解
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
7、创建UserService
@Service
public class UserService {
@Autowired //连接到UserDao Bean
private UserMapper userMapper;
List<User> get(){
return userMapper.get();
}
}
8、执行测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
UserService userService;
@Test
public void checkMapper() {
System.out.println("------" + userService.get().get(0).getUsername());
}
}
9、输出结果
10、(自定义配置Mybatis)进阶,在application.properties文件添加mybatis配置
mybatis.mapper-locations=mapper/*.xml
mybatis.type-aliases-package=com.example.demo
#更多配置请参见:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
11、创建user.xml文件(这里相当于把@Mapper接口中的@Select配置到了XML文件中,便于管理和维护,毕竟改java还需要重新编译才能拿到生产上去)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.UserMapper">
<resultMap id="UserResultMap" type="com.example.demo.User">
<result property="USERNAME" column="USERNAME"/>
</resultMap>
<select id="get" resultMap="UserResultMap">
select
username
from
sys_user
</select>
</mapper>
12、取消@Select注解
@Mapper//这里要生效需要在启动类添加@MapperScan
public interface UserMapper {
List<User> get();
}
13、再次执行单元测试,输出结果
14、集成Mybatis-Plus分页插件进阶
maven添加依赖
<!-- 分页插件,文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
15、application.properties文件添加pagehelper配置
######### 分页插件 ##########
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=false
pagehelper.support-methods-arguments=true
16、修改Service层
@Service
public class UserService {
@Autowired //连接到UserDao Bean
private UserMapper userMapper;
List<User> get(){
int page = 0, limit=2;
PageHelper.startPage(page, limit);
List<User> users = userMapper.get();
PageInfo<User> pageInfo=new PageInfo<>(users);
return pageInfo.getList();
}
}
这里可能有点点不明白,userMapper.get()明明是查询的全量,难道pagehelper是先查询全量后通过代码做分页的?通过打印日志可以看出pagehelper是作为mybatis插件的形式起作用的,就是说真正在执行sql的时候已经把limit拼接好了。
17、执行单元测试,查看结果