MyBatis-Plus 是 MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變揣钦,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生
他的特點(diǎn)是無(wú)侵入,不影響項(xiàng)目里原有的MyBatis寫法規(guī)則
損耗小聂抢,增強(qiáng)crud操作且性能幾乎保持
內(nèi)置通用 Mapper、通用 Service棠众,僅僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作琳疏,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求闸拿,簡(jiǎn)單sql操作即可用一行代碼實(shí)現(xiàn)
集成各類插件:代碼生成器空盼、內(nèi)置分頁(yè)插件、內(nèi)置性能分析插件新荤、內(nèi)置全局?jǐn)r截插件等等
下面開(kāi)始集成:
一揽趾、加入Mybatis-Plus依賴
本案例集成的springboot版本為2.1.18
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.1</version>
</dependency>
盡量選擇3.4.1,低版本xml里動(dòng)態(tài)語(yǔ)句如果使用if條件語(yǔ)句苛骨,參數(shù)在mapper接口需加@params注解篱瞎,即使方法只有一個(gè)參數(shù)。3.4.1版本方法只有一個(gè)參數(shù)時(shí)則無(wú)需加@params注解
二智袭、修改application.yml配置
本案例是在已有mybatis基礎(chǔ)上再集成mybatis-plus奔缠,所以MyBatis配置需要注釋掉,
注意mapper-locations吼野、config-location參數(shù)的值校哎,他們分別是項(xiàng)目對(duì)應(yīng)的XXXXmapper.xml映射文件位置和mybatis-config.xml配置文件位置
type-aliases-package為mapper接口的包路徑
# MyBatis配置
# mybatis:
# 搜索指定包別名
# typeAliasesPackage: com.**.domain
# 配置mapper的掃描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加載全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatis-plus配置
mybatis-plus:
global-config:
db-config:
id-type: auto
field-strategy: not_empty
table-underline: true
db-type: mysql
logic-delete-value: 1
logic-not-delete-value: 0
column-underline: true
type-aliases-package: com.**.domain
mapper-locations: classpath*:mapper/**/*Mapper.xml
config-location: classpath:mybatis/mybatis-config.xml
三瞳步、配置MyBatisConfig
修改sqlSessionFactory這個(gè)Bean闷哆,這個(gè)Bean主要是配置sessionFactory,將配置信息換成MyBatis-plus所需配置
SqlSessionFactoryBean換成MybatisSqlSessionFactoryBean
//@Bean
// public SqlSessionFactory sqlSessionFactory(DataSource //dataSource) throws Exception {
// String typeAliasesPackage = //env.getProperty("mybatis.typeAliasesPackage");
// String mapperLocations = env.getProperty("mybatis.mapperLocations");
// String configLocation = env.getProperty("mybatis.configLocation");
// typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
// VFS.addImplClass(SpringBootVFS.class);
// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
// sessionFactory.setDataSource(dataSource);
// sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
//sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
// sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
// return sessionFactory.getObject();
// }
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
String typeAliasesPackage = env.getProperty("mybatis-plus.type-aliases-package");
String mapperLocations = env.getProperty("mybatis-plus.mapper-locations");
String configLocation = env.getProperty("mybatis-plus.config-location");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
到此就已經(jīng)集成完成单起,重啟項(xiàng)目抱怔,參考官方提供的接口就可以快速實(shí)現(xiàn)數(shù)據(jù)操作了
整合后可能出現(xiàn)的問(wèn)題解決方案
1.curd操作報(bào)錯(cuò):nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),
如果沒(méi)集成前curd操作正常嘀倒,集成后出現(xiàn)這個(gè)錯(cuò)誤請(qǐng)仔細(xì)檢查application.yml中新增的幾個(gè)參數(shù)配置
2.集成后部分curd報(bào)錯(cuò):net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsqlparse
此異常是查詢結(jié)果進(jìn)行分頁(yè)時(shí)異常屈留,通過(guò)maven依賴樹(shù)局冰,查看com.github.pagehelper分頁(yè)插件依賴和com.github.jsqlparser依賴的版本兼容。是否有重復(fù)依賴和覆蓋依賴導(dǎo)致兼容問(wèn)題
本案例出現(xiàn)這個(gè)錯(cuò)誤灌危,強(qiáng)制指定com.github.jsqlparser依賴為3.2問(wèn)題解決康二,之前是1.3報(bào)錯(cuò)
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>3.2</version>
</dependency>
mybatis-plus官方幫助文檔地址:
https://mybatis.plus/
----------------- 文章如有問(wèn)題,請(qǐng)下方回復(fù)指出勇蝙,感謝查閱?? -----------------