MybatisPlus整合springCloud---去xml化

简述

还是和我之前分享的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

   <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-boot.version>2.1.3.RELEASE</spring-boot.version>
        <springfox-swagger.version>2.7.0</springfox-swagger.version>
        <org.projectlombok.lombok>1.18.6</org.projectlombok.lombok>
        <com.fasterxml.jackson>2.9.8</com.fasterxml.jackson>
        <postgresql.driver.version>9.4.1211</postgresql.driver.version>
        <boot.mybaits.version>1.2.0</boot.mybaits.version>
        <mybatisplus.version>3.1.1</mybatisplus.version>
    </properties>    

        <!-- db -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>${postgresql.driver.version}</version>
        </dependency>
        <!-- Mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-dts</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>

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<Person> {

     @SelectProvider(type = PersonProvider.class, method = "findByPage")
    //@Select("select * from tb_person where name = #{name} ")
    IPage<Person> findPage(Page<Person> page, String name);

}

类似tk.mapper也是基础一个公共类mapper实现通用方法,不过比tk.mapper要更加全面

此处有一个自定义的方法findPage,用来测试自定义sql结合plus的分页插件,@select和@SelectProvider就不展开介绍了

@Service
public class PersonService extends ServiceImpl<PersonMapper, Person> {

    public Person get(String id){
        return getById(id);
    }

    public boolean saveEntity(Person person){
       return save(person);
    }

    public IPage<Person> findByPage(String name){
        Person person = new Person();
        person.setName(name);
        Wrapper<Person> wrapper = new QueryWrapper(person);
        Page<Person> page = new Page<>();
        IPage<Person> personIPage = baseMapper.selectPage(page, wrapper);
        return personIPage;
    }

    public IPage<Person> testPage(String name){
        Page<Person> page = new Page<>();
        IPage<Person> personIPage = this.baseMapper.findPage(page, name);
        return personIPage;
    }

}

service层分别是保存,查询,分页方法,以上满足了用mybatisPlus全程去XML的使用方法

详细代码可以查看我git上的分享

https://github.com/zhouxiaohei/spring-boot-mybatisPlus-demo

发布了62 篇原创文章 · 获赞 33 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Zzhou1990/article/details/89968140