项目原来是使用mybtais + durid,现升级为mybatis-plus2.3 + durid + mysql。
官方文档地址,请注意:mybatis-plus3.0+ 的配置有变化,请查看官网文档(可能是旧的)或demo
步骤如下:
1. 引入pom
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<!-- 如果mapper.xml是放在src/main/java目录下,需配置以下-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/mapper/*.xml</include>
</includes>
</resource>
</resources>
</build>
- 配置application.properties(durid配置不变)
##mybatis-plus begin
#mapper.xml包路径
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis-plus.mapper-locations=classpath*:sqlmap/**/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
mybatis-plus.typeAliasesPackage=com.burt.domain
#枚举扫描,多个package用逗号或者分号分隔
#mybatis-plus.typeEnumsPackage=com.burt.*.entity.enums
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
mybatis-plus.global-config.id-type=2
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
mybatis-plus.global-config.field-strategy=2
#驼峰下划线转换
mybatis-plus.global-config.db-column-underline=true
#mp2.3+ 全局表前缀 mp_
#mybatis-plus.global-config.table-prefix: mp_
#刷新mapper 调试神器
#mybatis-plus.global-config.refresh-mapper: true
#配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.cache-enabled=false
##mybatis-plus end
- 使用@MapperScan注解扫描Mapper接口
@MapperScan(value = { "com.burt.dao", "com.burt.*.dao" })
- 修改durid配置中mybatis的SqlSessionFactoryBean
org.mybatis.spring.SqlSessionFactoryBean
为mybatis-plus的SqlSessionFactoryBeancom.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
如果不修改会仍然使用mybatis的SqlSessionFactoryBean而不是mytais-plus的,会出现异常Invalid bound statement (not found)
如果项目启动出现这个错:
sun.misc.Unsafe.park......
java.util.concurrent.locks.LockSupport.parkNanos......
那极有可能是因为上述第4步没有做,没有换成mybatis-plus的SqlSessionFactoryBean,导致mybatis与mybatis-plus冲突