参数说明

基础类API

MybatisSqlSessionFactoryBean

MP 创建 SqlSession 示例工厂类(与 Mybatis-Spring 的工厂 Bean 相类似,只是加入了 MP 特色功能配置),用法参考原生 Mybatis-Spring 的使用方法。

本处只针对 MP 特有参数进行讲解,其余请参考原生 Mybatis

globalConfig

  • 类型:GlobalConfiguration
  • 描述:MP 全局策略配置

Spring MVC 配置参考

  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. <property name="jdbcTypeForNull">
  27. <util:constant static-field="org.apache.ibatis.type.JdbcType.NULL"/>
  28. </property>
  29. </bean>
  30. <!-- 定义 MP 全局策略 -->
  31. <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
  32. <!-- 逻辑删除 定义下面3个参数-->
  33. <property name="sqlInjector" ref="logicSqlInjector"/>
  34. <property name="logicDeleteValue" value="-1"/>
  35. <property name="logicNotDeleteValue" value="1"/>
  36. <!-- 全局ID类型: 0, "数据库ID自增", 1, "用户输入ID", 2, "全局唯一ID", 3, "全局唯一ID"-->
  37. <property name="idType" value="2"/>
  38. <!-- 2.1-gamma+ 数据库自动识别,无需配置数据库类型
  39. <property name="dbType" value="mysql" />
  40. -->
  41. <!--主键Sequence-->
  42. <property name="keyGenerator" ref="keyGenerator"/>
  43. <!-- 公共字段填充处理器 -->
  44. <property name="metaObjectHandler" ref="myMetaObjectHandler"/>
  45. <!--数据库关键字转义符,'desc', "desc" 2.1-gamma+不需要制定-->
  46. <!--<property name="identifierQuote" value="'" />-->
  47. </bean>
  48. <!-- 配置oracle主键Sequence, 其他类型数据库,请配置相应的类型-->
  49. <bean id="keyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"/>
  50. <!-- 自定义处理器 -->
  51. <bean id="myMetaObjectHandler" class="com.baomidou.test.MyMetaObjectHandler" />
  52. <!-- 逻辑删除Sql注入器-->
  53. <bean id="logicSqlInjector" class="com.baomidou.mybatisplus.mapper.LogicSqlInjector"/>
  54. <!-- 配置mybatis 扫描mapper接口的路径, 相当于注解@MapperScan,@MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")-->
  55. <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  56. <property name="basePackage" value="com.baomidou.mybatisplus.test.h2.entity.mapper"/>
  57. </bean>

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. PaginationInterceptor pagination = new PaginationInterceptor();
  14. sqlSessionFactory.setPlugins(new Interceptor[]{
  15. pagination,
  16. new PerformanceInterceptor(),
  17. new OptimisticLockerInterceptor()
  18. });
  19. sqlSessionFactory.setGlobalConfig(globalConfiguration);
  20. return sqlSessionFactory.getObject();
  21. }
  22. @Bean
  23. public GlobalConfiguration globalConfiguration() {
  24. GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
  25. conf.setLogicDeleteValue("-1");
  26. conf.setLogicNotDeleteValue("1");
  27. conf.setIdType(2);
  28. conf.setMetaObjectHandler(new H2MetaObjectHandler());
  29. return conf;
  30. }
  31. }

GlobalConfiguration

MP 全局配置类,用于配置 MP 的各项策略(如:主键策略、数据库方言等),需要注入到 MybatisSqlSessionFactoryBean 中。

dbType

从2.1-gamma版本,不需要配置dbType,自动识别

  • 描述:指定数据库类型(如无您所需的数据库类型,可以向我们提交 issue 或者 自行扩展数据库方言
  • 类型:Enum
  • 默认值:DBType.MYSQL
  • 可选值:MYSQL、ORACLE、DB2、H2、HSQL、SQLITE、POSTGRE、SQLSERVER2005、SQLSERVER
    JavaXML
    DBType.MYSQLmysql
    DBType.ORACLEoracle
    DBType.DB2db2
    DBType.H2h2
    DBType.HSQLhsql
    DBType.SQLITEsqlite
    DBType.POSTGREpostgresql
    DBType.SQLSERVER2005sqlserver2005
    DBType.SQLSERVERsqlserver

idType

  • 描述:定义主键策略
  • 类型:Enum
  • 默认值:IdType.ID_WORKER
  • 可选值:AUTO(数据库自增)、INPUT(自行输入)、ID_WORKER(分布式全局唯一ID)、UUID(32位UUID字符串)、ID_WORKER_STR(分布式全局唯一ID 字符串类型)
    JavaXML
    IdType.AUTO0
    IdType.INPUT1
    IdType.ID_WORKER2
    IdType.UUID3
    IdType.NONE4
    IdType.ID_WORKER_STR5

dbColumnUnderline

  • 描述:表名和字段名是否使用下划线命名
  • 类型:boolean
  • 默认值:false

keyGenerator

  • Sequence生成器:根据数据库类型,可选值:DB2KeyGeneratorOracleKeyGeneratorPostgreKeyGenerator

逻辑删除注入

  1. @Bean
  2. public GlobalConfiguration globalConfiguration() {
  3. GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
  4. conf.setLogicDeleteValue("-1");
  5. conf.setLogicNotDeleteValue("1");
  6. conf.setIdType(2);
  7. return conf;
  8. }