欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解Spring boot上配置与使用mybatis plus

程序员文章站 2024-02-16 09:39:34
这个是mybatisplus的官方文档,上面是mybtisplus的配置使用方法,以及一些功能的介绍 下面开始配置 maven依赖 <...

这个是mybatisplus的官方文档,上面是mybtisplus的配置使用方法,以及一些功能的介绍

下面开始配置

maven依赖

    <dependency>
      <groupid>org.mybatis.spring.boot</groupid>
      <artifactid>mybatis-spring-boot-starter</artifactid>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupid>com.baomidou</groupid>
      <artifactid>mybatis-plus</artifactid>
      <version>2.0-beta</version>
    </dependency>

config文件

@configuration
public class mybatisplusconfig {
  @autowired
  private datasource datasource;

  @autowired
  private mybatisproperties properties;

  @autowired
  private resourceloader resourceloader = new defaultresourceloader();

  @autowired(required = false)
  private interceptor[] interceptors;

  @autowired(required = false)
  private databaseidprovider databaseidprovider;

  /**
   *  mybatis-plus分页插件
   */
  @bean
  public paginationinterceptor paginationinterceptor() {
    paginationinterceptor page = new paginationinterceptor();
    page.setdialecttype("mysql");
    return page;
  }
  /**
   * 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
   * 配置文件和mybatis-boot的配置文件同步
   * @return
   */
  @bean
  public mybatissqlsessionfactorybean mybatissqlsessionfactorybean() {
    mybatissqlsessionfactorybean mybatisplus = new mybatissqlsessionfactorybean();
    mybatisplus.setdatasource(datasource);
    mybatisplus.setvfs(springbootvfs.class);
    if (stringutils.hastext(this.properties.getconfiglocation())) {
      mybatisplus.setconfiglocation(this.resourceloader.getresource(this.properties.getconfiglocation()));
    }
    mybatisplus.setconfiguration(properties.getconfiguration());
    if (!objectutils.isempty(this.interceptors)) {
      mybatisplus.setplugins(this.interceptors);
    }
    mybatisconfiguration mc = new mybatisconfiguration();
    mc.setdefaultscriptinglanguage(mybatisxmllanguagedriver.class);
    mybatisplus.setconfiguration(mc);
    if (this.databaseidprovider != null) {
      mybatisplus.setdatabaseidprovider(this.databaseidprovider);
    }
    if (stringutils.haslength(this.properties.gettypealiasespackage())) {
      mybatisplus.settypealiasespackage(this.properties.gettypealiasespackage());
    }
    if (stringutils.haslength(this.properties.gettypehandlerspackage())) {
      mybatisplus.settypehandlerspackage(this.properties.gettypehandlerspackage());
    }
    if (!objectutils.isempty(this.properties.resolvemapperlocations())) {
      mybatisplus.setmapperlocations(this.properties.resolvemapperlocations());
    }
    return mybatisplus;
  }
}

插件以@bean的形式添加在config文件里例如:

@bean
  public paginationinterceptor paginationinterceptor() {
    paginationinterceptor page = new paginationinterceptor();
    page.setdialecttype("mysql");
    return page;
  }

这是一个分页插件。

代码生成器参考官方文档,但是他的代码生成器可供修改的地方不多,只能控制一下代码生成路径之类的,*度不高,推荐把mybatisplus 代码生成部分单独抽出来,修改成自己合适的,再打成jar包进行依赖。

springboot properties文件配置

# mybatis_config
mybatis.mapper-locations=classpath:com/boot/mapper/xml/*mapper.xml 
mybatis.typealiasespackage=com.boot.entity

前一个是xml文件的路径

后面一个时别名包路径

在springboot的启动类上加上注解

@mapperscan("com.boot.mapper*")
@springbootapplication
public class bootapplication {

@mapperscan 里面是dao的扫描路径

mybatisplus 提供了比较齐全的crud即增删改查,不需要在mapper.xml里写sql可以直接调用
例子:

//可以在controller:
egg egg = new egg();
eggservice.insert(egg);
//可以在service
egg egg = new egg();
this.selectlist(new entitywrapper<egg >(egg));//mybatisplus提供依靠实体查询的方法的写法
//也可以
mapper.selectlist(new entitywrapper<egg >(egg));

分页查询demo:

dao:返回list

复制代码 代码如下:

list<role> getpage(pagination page, roleparam param) throws dataaccessexception;

xml:照着普通sql写就可以了,其他的会自动拼接

<select id="getpage" resultmap="roleresultmap">
  select 
  <include refid="columns"/> 
  from ella_role 
  <include refid="where"/>
 </select>

service:

public page<ellarole> getpage(roleparam param) {
//new 一个page 初始化传入current当前页,size每页几个,order 排序(默认asc要改的话page.setasc(false);)
    page<role> page = new page<role>(param.getcurrent(), param.getsize(), param.getorder());
    page.setrecords(irolemapper.getpage(page, param));
    return page;
  }

end

接下来是一些小贴士

生成的实体里主键要加上@tableid注解不然会报错

数据库里有下划线的字段在查询返回是会取不到值,需要在config文件中的mybatissqlsessionfactorybean方法下加上

mybatisplus.setdbcolumnunderline(true); 

domain里的所有属性都会映射到数据库的字段上,如果你加上数据库里没有但要用的属性需要在上面加上@tablefield(exist = false)标签,这样他会被忽略

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。