springBoot 集成mybatis-plus 实战

mybatis-plus 是mybatis的升级版,使用很方便,今天我们分享一下实战操作:

1、jar包引入:

        
            com.baomidou
            mybatis-plus
            2.1.9
        
        
            com.baomidou
            mybatisplus-spring-boot-starter
            1.0.5
        
          
            com.baomidou
            mybatis-plus-support
            2.1.9
            compile
        

2、配置文件配置:

mybatis-plus:
  configuration:
    #默认值:true是否开启自动驼峰命名规则(camel case)映射
    map-underscore-to-camel-case: true
    #全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true
    cache-enabled: true
#false指定当结果集中值为 null 的时候是否调用映射对象的 Setter(Map 对象时为 put)方法,通常运用于有 Map.keySet() 依赖或 null 值初始化的情况
    call-setters-on-nulls: true
  global-config:
    id-type: 0  # 主键生成策略    
    field-strategy: 2
    db-column-underline: true
    refresh-mapper: true
    capital-mode: true
    logic-delete-value: -1
    logic-not-delete-value: 0
    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector  #sql主入器
  

3、mybatis-pius的业务配置,比如分页,sql注入等:

@Configuration
public class CommonMybatisPlusConfig {

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 开启 PageHelper 的支持
        paginationInterceptor.setLocalPage(true);
        return paginationInterceptor;
    }

    @Bean
    public OptimisticLockerInterceptor optimisticLoker() {
        return new OptimisticLockerInterceptor();
    }

    /**
     * 注入sql注入器
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

4、实体类上配置表名

@TableName("user_info")//必加表名
public class Userinfo {
    @TableId(type= IdType.INPUT)//AUTO 设置主键自增?
    private Integer id;
}

主键生成策略,源码:一目了然!

package com.baomidou.mybatisplus.enums;

/**
 * 

* 生成ID类型枚举类 *

* * @author hubin * @Date 2015-11-10 */ public enum IdType { AUTO(0, "数据库ID自增"), INPUT(1, "用户输入ID"), /* 以下2种类型、只有当插入对象ID 为空,才自动填充。 */ ID_WORKER(2, "全局唯一ID"), UUID(3, "全局唯一ID"), NONE(4, "该类型为未设置主键类型"), ID_WORKER_STR(5, "字符串全局唯一ID"); /** * 主键 */ private final int key; /** * 描述 */ private final String desc; IdType(final int key, final String desc) { this.key = key; this.desc = desc; } /** *

* 主键策略 (默认 ID_WORKER) *

* * @param idType ID 策略类型 * @return */ public static IdType getIdType(int idType) { IdType[] its = IdType.values(); for (IdType it : its) { if (it.getKey() == idType) { return it; } } return ID_WORKER; } public int getKey() { return this.key; } public String getDesc() { return this.desc; } }

 5、Mapper层继承mybatis-plus的基础API :  BaseMapper

public interface UserInfoMapper extends BaseMapper 

6、业务层继承mybatis-plus的业务接口: ServiceImpl, T>

public class UserServiceImpl extends ServiceImpl implements UserService

源码如图:

springBoot 集成mybatis-plus 实战_第1张图片

7、特别注意:如果请求时报错:BaseMapper里的接口无法使用报错

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.admin.db.mapper.ManageMapper.selectById

解决方案:只需要在你配置数据源的地方,换一个类即可:

SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

更改为:
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();

比如代码块:

@Primary
    @Bean("sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
      //SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); 换成下面的
        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setPlugins(new Interceptor[]{new PageInterceptor()});

        //驼峰命名
        factoryBean.setConfigLocation(new ClassPathResource("mybatis.xml"));

        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
        return factoryBean.getObject();
    }

 到此,mybatis-plus配置分享完毕,下篇我们分享其具体业务使用,敬请期待!

你可能感兴趣的:(Mybatis,spring,boot,java)