xml的配置代码:
<!-- 配置 SqlSessionFactoryBean (Mybatis_PLUS)-->
<bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"/>
<!--<property name="configLocation" value="classpath:mybatis.xml"/>-->
<!-- 别名处理 -->
<property name="typeAliasesPackage" value="com.it.mp.bean"/>
<!--加载配置-->
<property name="configuration" ref="configuration"/>
<property name="globalConfig" ref="globalConfig"/>
</bean>
<!--这个等于Mybatis的全局配置文件,如果在MybatisSqlSessionFactoryBean里面已经配置了configLocation属性(外部加载Mybatis全局配置文件),就不能再配置configuration属性-->
<bean id="configuration" class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<!--开启驼峰命名-->
<property name="mapUnderscoreToCamelCase" value="true"/>
<!--日志打印SQL语句-->
<property name="logImpl" value="LOG4J"/>
</bean>
<!--定义MP的全局策略配置-->
<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<!---->
<property name="dbConfig" ref="dbConfig"/>
</bean>
<bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
<!--配置主键策略(这里选择的是主键自增)-->
<property name="idType" value="AUTO"/>
</bean>
1.MybatisConfiguration
MybatisConfiguration继承自Mybatis的Configuration类
public class MybatisConfiguration extends Configuration {
<!--这个等于Mybatis的全局配置文件,如果在MybatisSqlSessionFactoryBean里面已经配置了configLocation属性(外部加载Mybatis全局配置文件),就不能再配置configuration属性--> <bean id="configuration" class="com.baomidou.mybatisplus.core.MybatisConfiguration"> <!--开启驼峰命名--> <property name="mapUnderscoreToCamelCase" value="true"/> <!--日志打印SQL语句--> <property name="logImpl" value="org.apache.ibatis.logging.log4j.Log4jImpl"/> ...... </bean>
MybatisConfiguration等价于Mybatis的全局配置文件,如果在MybatisSqlSessionFactoryBean中已经配置了全局配置文件,就不要在配置MybatisConfiguration,会抛出异常
configLocation和configuration不能同时存在
logImpl的value怎么写:
①:Mybatis的Configuration的setLogImpl(),点进去
②:自己用的什么日志就写对应日志Impl实现类
2. GlobalConfig
public class GlobalConfig implements Serializable { /** * 是否开启 LOGO */ private boolean banner = true; /** * 缓存 Sql 解析初始化 * * @deprecated 3.1.1 不再需要这个属性, 现在是全局开启状态 */ @Deprecated private boolean sqlParserCache = false; /** * 机器 ID 部分 */ private Long workerId; /** * 数据标识 ID 部分 */ private Long datacenterId; /** * 是否初始化 SqlRunner */ private boolean enableSqlRunner = false; /** * 数据库相关配置 */ private DbConfig dbConfig; /** * SQL注入器 */ private ISqlInjector sqlInjector; /** * Mapper父类 */ private Class<?> superMapperClass = Mapper.class; /** * 缓存当前Configuration的SqlSessionFactory */ @Setter(value = AccessLevel.NONE) private SqlSessionFactory sqlSessionFactory; /** * 缓存已注入CRUD的Mapper信息 */ private Set<String> mapperRegistryCache = new ConcurrentSkipListSet<>(); /** * 元对象字段填充控制器 */ private MetaObjectHandler metaObjectHandler; /** * 标记全局设置 (统一所有入口) */ public void signGlobalConfig(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; }
<!--定义MP的全局策略配置--> <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig"> <!----> <property name="dbConfig" ref="dbConfig"/> ...... </bean>
3. DbConfig
DbConfig是GlobalConfig的一个内部类
public static class DbConfig { /** * 数据库类型 * * @deprecated 不再需要, mp不应该也不需要关心数据库类型 */ @Deprecated private DbType dbType = DbType.OTHER; /** * 主键类型(默认 ID_WORKER) */ private IdType idType = IdType.ID_WORKER; /** * 表名前缀 */ private String tablePrefix; /** * schema * * @since 3.1.1 */ private String schema; /** * 字段 format * <li> 例: `%s` </li> * <p> 对主键无效 </p> * * @since 3.1.1 */ private String columnFormat; /** * 表名、是否使用下划线命名(默认 true:默认数据库表下划线命名) */ private boolean tableUnderline = true; /** * String 类型字段 LIKE * * @deprecated 3.1.1 后续将删除这个属性 */ @Deprecated private boolean columnLike = false; /** * 大写命名 */ private boolean capitalMode = false; /** * 表主键生成器 */ private IKeyGenerator keyGenerator; /** * 逻辑删除全局值(默认 1、表示已删除) */ private String logicDeleteValue = "1"; /** * 逻辑未删除全局值(默认 0、表示未删除) */ private String logicNotDeleteValue = "0"; /** * 字段验证策略 */ private FieldStrategy fieldStrategy = FieldStrategy.NOT_NULL; }
<bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig"> <!--配置主键策略(这里选择的是主键自增)--> <property name="idType" value="AUTO"/> </bean>
里面可以配置主键策略,表名的前缀等属性,如果配置idType,就不用在实体类上主键属性添加@idType注解