还是和我之前分享的SpringBoot结合mybatis + tk.mapper(通用增删改查组件) + pageHelper(分页插件)一样,用springBoot我就不想用其他的配置文件,xml文件。
mybatisPlus2.x 版本不支持@Select或者@SelectProvider自定义sql结合分页插件使用,只支持xml文件的方式。所以本篇在mybatisPlus3.x基础上例子。
如果使用mybatisPlus2.x,推荐两篇写的不错的博客
https://blog.csdn.net/apicescn/article/details/79538938
https://blog.csdn.net/apicescn/article/details/79554597
如果要在2.x版本使用自定义sql分页,除了使用xml配置文件,也可以引入分页组件pageHelper
mybatisPlus和tk.mapper比较,网上很多比较文章,这里不多赘述
mybatisPlus比tk.mapper多了很多实用的功能确实不错,但是这个无xml的分页折磨我很久,总觉得分页和mybatisPlus太耦合。
pom文件
springBoot配置多说,mybatisPlus版本为3.1.1,3.x版本代码生成器多了分出一个jar包mybatis-plus-generator
UTF-8
1.8
2.1.3.RELEASE
2.7.0
1.18.6
2.9.8
9.4.1211
1.2.0
3.1.1
org.postgresql
postgresql
${postgresql.driver.version}
com.baomidou
mybatis-plus-boot-starter
${mybatisplus.version}
com.baomidou
mybatis-plus
${mybatisplus.version}
com.baomidou
mybatis-plus-generator
${mybatisplus.version}
com.baomidou
mybatis-plus-dts
${mybatisplus.version}
yml文件
mybatis有驼峰转换在tk,mapper生效,但是用mybatisPlus必须配置它的驼峰转换。
此处猜测大部分配置用mybatisPlus的配置才能生效,因为各种配置是针对mybatisPlus
spring:
application:
name: report-service
swagger:
package: com.zhou.demo.mybatisplus.controller
profiles:
active: dev
datasource:
driverClassName: org.postgresql.Driver
url: *******************************
username: *******************************
password: *******************************
tomcat:
max-active: 300
server:
port: 8080
mybatis-plus:
type-aliases-package: com.zhou.demo.mybatisplus.dao.bean
configuration:
map-underscore-to-camel-case: true
代码实现
mybatisPlus的注解tableName和TableField condition是查询的方式like查询,可以说支持的很好了
3.x较2.x下面的实现类的路径做了一定漂移
@Data
@TableName("tb_person")
public class Person{
private String id;
@TableField(condition = SqlCondition.LIKE)
private String name;
private int age;
}
public interface PersonMapper extends BaseMapper {
@SelectProvider(type = PersonProvider.class, method = "findByPage")
//@Select("select * from tb_person where name = #{name} ")
IPage findPage(Page page, String name);
}
类似tk.mapper也是基础一个公共类mapper实现通用方法,不过比tk.mapper要更加全面
此处有一个自定义的方法findPage,用来测试自定义sql结合plus的分页插件,@select和@SelectProvider就不展开介绍了
@Service
public class PersonService extends ServiceImpl {
public Person get(String id){
return getById(id);
}
public boolean saveEntity(Person person){
return save(person);
}
public IPage findByPage(String name){
Person person = new Person();
person.setName(name);
Wrapper wrapper = new QueryWrapper(person);
Page page = new Page<>();
IPage personIPage = baseMapper.selectPage(page, wrapper);
return personIPage;
}
public IPage testPage(String name){
Page page = new Page<>();
IPage personIPage = this.baseMapper.findPage(page, name);
return personIPage;
}
}
service层分别是保存,查询,分页方法,以上满足了用mybatisPlus全程去XML的使用方法
详细代码可以查看我git上的分享
https://github.com/zhouxiaohei/spring-boot-mybatisPlus-demo