安装

依赖配置

查询最高版本或历史版本方式:Maven中央库 | Maven阿里库| Mybatis-Plus 3X 文档

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus</artifactId>
  4. <version>该文档为 2.x 文档,仓库最高 2.x 版本号, 请勿用 3.x 版本</version>
  5. </dependency>
  6. <!--快照版本使用,正式版本无需添加此仓库-->
  7. <repository>
  8. <id>snapshots</id>
  9. <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
  10. </repository>

!> 特别说明:MybatisMybatis-Spring依赖请勿加入项目配置,以免引起版本冲突!!!Mybatis-Plus会自动帮你维护!

如何集成

Mybatis-Plus 的集成非常简单,对于 Spring,我们仅仅需要把 Mybatis 自带的MybatisSqlSessionFactoryBean替换为 MP 自带的即可。

MP 大部分配置都和传统 Mybatis 一致,少量配置为 MP 特色功能配置,此处仅对 MP 的特色功能进行讲解,其余请参考 Mybatis-Spring 配置说明

示例工程:

👉 mybatisplus-spring-mvc

👉 mybatisplus-spring-boot

  1. # PostgreSql 自定义 SQL 注入器
  2. sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector

示例代码:

XML 配置

详细配置可参考参数说明中的 MybatisSqlSessionFactoryBeanGlobalConfiguration

  1. <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
  2. <property name="dataSource" ref="dataSource"/>
  3. <!-- 配置实体扫描路径,多个package可以用分号; 逗号, 分隔, 支持通配符*-->
  4. <!-- com.a.b.entity;com.a.c.entity;com.d.*.entity-->
  5. <property name="typeAliasesPackage" value="com.baomidou.mybatisplus.test.h2.entity"/>
  6. <property name="configuration" ref="mybatisConfig"/>
  7. <!-- MP 全局配置注入 -->
  8. <property name="globalConfig" ref="globalConfig"/>
  9. <property name="plugins">
  10. <array>
  11. <!-- 分页插件配置 -->
  12. <bean id="paginationInterceptor"
  13. class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
  14. <!-- 乐观锁插件 -->
  15. <bean id="optimisticLockerInterceptor"
  16. class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
  17. </bean>
  18. <!-- 性能拦截器,兼打印sql,不建议生产环境配置-->
  19. <bean id="performanceInterceptor"
  20. class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"/>
  21. </array>
  22. </property>
  23. </bean>
  24. <bean id="mybatisConfig" class="com.baomidou.mybatisplus.MybatisConfiguration">
  25. <property name="mapUnderscoreToCamelCase" value="true"/>
  26. <!-- 部分数据库不识别默认的NULL类型(比如oracle,需要配置该属性 -->
  27. <property name="jdbcTypeForNull">
  28. <util:constant static-field="org.apache.ibatis.type.JdbcType.NULL"/>
  29. </property>
  30. </bean>
  31. <!-- 定义 MP 全局策略 -->
  32. <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
  33. <!-- 逻辑删除 定义下面3个参数-->
  34. <property name="sqlInjector" ref="logicSqlInjector"/>
  35. <property name="logicDeleteValue" value="-1"/>
  36. <property name="logicNotDeleteValue" value="1"/>
  37. <!-- 全局ID类型: 0, "数据库ID自增", 1, "用户输入ID", 2, "全局唯一ID", 3, "全局唯一ID"-->
  38. <property name="idType" value="2"/>
  39. <!-- 2.1-gamma+ 数据库自动识别,无需配置数据库类型
  40. <property name="dbType" value="mysql" />
  41. -->
  42. <!-- 2.3+ 全局表前缀 mp_
  43. <property name="tablePrefix" value="mp_" />
  44. -->
  45. <!--主键Sequence-->
  46. <property name="keyGenerator" ref="keyGenerator"/>
  47. <!-- 公共字段填充处理器 -->
  48. <property name="metaObjectHandler" ref="myMetaObjectHandler"/>
  49. <!--数据库关键字转义符,'desc', "desc" 2.1-gamma+不需要制定-->
  50. <!--<property name="identifierQuote" value="'" />-->
  51. </bean>
  52. <!-- 配置oracle主键Sequence, 其他类型数据库,请配置相应的类型-->
  53. <bean id="keyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"/>
  54. <!-- 自定义处理器 -->
  55. <bean id="myMetaObjectHandler" class="com.baomidou.test.MyMetaObjectHandler" />
  56. <!-- 逻辑删除Sql注入器-->
  57. <bean id="logicSqlInjector" class="com.baomidou.mybatisplus.mapper.LogicSqlInjector"/>
  58. <!-- 配置mybatis 扫描mapper接口的路径, 相当于注解@MapperScan,@MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")-->
  59. <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  60. <property name="basePackage" value="com.baomidou.mybatisplus.test.h2.entity.mapper"/>
  61. </bean>

特别注意 MybatisSqlSessionFactoryBean 非原生的类,必须如上配置 !

Spring Bean Configuration示例

  1. @Configuration
  2. @MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")
  3. public class MybatisConfigMetaObjOptLockConfig {
  4. @Bean("mybatisSqlSession")
  5. public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ResourceLoader resourceLoader, GlobalConfiguration globalConfiguration) throws Exception {
  6. MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
  7. sqlSessionFactory.setDataSource(dataSource);
  8. sqlSessionFactory.setTypeAliasesPackage("com.baomidou.mybatisplus.test.h2.entity.persistent");
  9. MybatisConfiguration configuration = new MybatisConfiguration();
  10. configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
  11. configuration.setJdbcTypeForNull(JdbcType.NULL);
  12. sqlSessionFactory.setConfiguration(configuration);
  13. sqlSessionFactory.setPlugins(new Interceptor[]{
  14. new PaginationInterceptor(),
  15. new PerformanceInterceptor(),
  16. new OptimisticLockerInterceptor()
  17. });
  18. sqlSessionFactory.setGlobalConfig(globalConfiguration);
  19. return sqlSessionFactory.getObject();
  20. }
  21. @Bean
  22. public GlobalConfiguration globalConfiguration() {
  23. GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
  24. conf.setLogicDeleteValue("-1");
  25. conf.setLogicNotDeleteValue("1");
  26. conf.setIdType(2);
  27. conf.setMetaObjectHandler(new H2MetaObjectHandler());
  28. return conf;
  29. }
  30. }

优秀案例

需!加入列表的童鞋可以告诉我们。