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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章