springBoot 集成mybatis-plus 实战

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

1、jar包引入:

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatisplus-spring-boot-starter</artifactId>
            <version>1.0.5</version>
        </dependency>
          <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-support</artifactId>
            <version>2.1.9</version>
            <scope>compile</scope>
        </dependency>

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;

/**
 * <p>
 * 生成ID类型枚举类
 * </p>
 *
 * @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;
    }

    /**
     * <p>
     * 主键策略 (默认 ID_WORKER)
     * </p>
     *
     * @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<T>

public interface UserInfoMapper extends BaseMapper<UserInfo> 

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

public class UserServiceImpl extends ServiceImpl<UserinfoMapper, UserInfo> implements UserService

源码如图:

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配置分享完毕,下篇我们分享其具体业务使用,敬请期待!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值