目录
1.整合mybatis
详细操作可以参考mybatis官网https://github.com/mybatis
1.在pom文件中添加start
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
2.在yml文件中进行配置
在springboot中可用不写mybatis的主配置文件,而是把需要配置的信息在yml文件中进行配置
在configuration:下进行配置,注意不要再写主配置文件的位置
(config-location: classpath:mybatis/mybatis-config.xml),否则会报异常
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: root
password: lmz0521
driver-class-name: com.mysql.cj.jdbc.Driver
# 配置mybatis规则
mybatis:
# config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
configuration:
map-underscore-to-camel-case: true #开启驼峰命名法
#可以不写全局;配置文件,所有全局配置文件的配置都放在configuration配置项中即可
3.创建mapper
必须在每个mapper文件上表明@mapper注解,或在主程序文件中表明@MapperScan(basePackages = "=mapper")注解,并表明扫描的包路径
@Mapper
public interface AccountMapper {
Account getAcct(Integer id);
}
4.在mapper文件中写sql
<?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="admin.mapper.AccountMapper">
<!-- public Account getAcct(Long id); -->
<select id="getAcct" resultType="admin.bean.Account">
select *
from goods
where id = #{id}
</select>
</mapper>
5.在service层测试
@Service
public class AccountService {
@Autowired()
AccountMapper accountMapper;
public Account getByAcctById(int id){
return accountMapper.getAcct(id);
}
}
2.整合mybatis-plus
1、什么是MyBatis-Plus
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
建议安装 MybatisX 插件
2.修改pom文件
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
优点:
- 只需要我们的Mapper继承 BaseMapper 就可以拥有crud能力
3.创建mapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
4.创建service层
//接口实现IService<User>接口
public interface UserService extends IService<User> {
}
//实现类,继承ServiceImpl<UserMapper,User>
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
}
5.实现功能
@Controller
public class tableController {
@Autowired
UserService userService;
@GetMapping("/dynamic_table")
public String dynamicTable(@RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
List<User> list = userService.list();
model.addAttribute("users", list);
Page<User> page = new Page<>(pn, 2);
//page是分页查询的结果
Page<User> userPage = userService.page(page, null);
model.addAttribute("users", userPage);
long current = page.getCurrent();
long pages = page.getPages();
long total = page.getTotal();
List<User> records = page.getRecords();
return "/table/dynamic_table";
}
}
6.实现分页功能的插件
@Configuration
public class MybatisConfig {
// 旧版
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
}
更多功能可以参照mybatis-plus官网