3.创建xml方式配置文件:application-xml.properties,配置xml和config的路径地址
# 配置mapper.xml和mybatis-config.xml路径 mybatis.config-location=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml4.编写测试类:UserXmlMapperTest.java
此类和UserMapperTest类似的,唯一区别就是制定了运行环境变量为:xml
在实体对象中我们设置了枚举类型:StatusEnum。在mybatis中对于枚举的默认配置是由EnumTypeHandler处理类进行处理的,其会默认使用name进行赋值。同时mybatis还提供了一个EnumOrdinalTypeHandler处理类,其是根据枚举的索引值进行赋值的。
注册类型处理类有很多中方式,但每一种方式最后都是通过TypeHandlerRegistry类进行处理的,这里讲解下通过多种方式进行配置。
配置文件中新增属性:mybatis.type-handlers-package:配置处理类的路径。
# 类型处理类 mybatis.type-handlers-package=cn.lqdev.learning.springboot.chapter35.config处理类示例:CustomEnumOrdinalTypeHandler.java。这里直接继承EnumOrdinalTypeHandler进行自定义。
/** * * @author oKong * */ //枚举索引处理类 @MappedTypes(value = { StatusEnum.class }) public class CustomEnumOrdinalTypeHandler<E extends Enum<E>> extends EnumOrdinalTypeHandler<E>{ public CustomEnumOrdinalTypeHandler(Class<E> type) { super(type); } }其中,@MapperType指定了哪些类型指定此处理类的。
自定义ConfigurationCustomizer类进行配置(推荐)。
/** * * <p>函数名称: ConfigurationCustomizer </p> * <p>功能说明: 自定义相关注册器 * * </p> *<p>参数说明:</p> * @return * * @date 创建时间:2018年12月2日 * @author 作者:oKong */ @Bean public ConfigurationCustomizer configurationCustomizer() { ConfigurationCustomizer config = new ConfigurationCustomizer() { @Override public void customize(org.apache.ibatis.session.Configuration configuration) { // TypeAliasRegistry typeAliasRegistry = configuration.getTypeAliasRegistry(); // mapper接口注册器 // MapperRegistry mapperRegistry = configuration.getMapperRegistry(); // 类型处理器 TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); typeHandlerRegistry.register(StatusEnum.class, EnumOrdinalTypeHandler.class); } }; return config; }通过SqlSessionFactory来获取TypeHandlerRegistry进行配置。
@Autowired SqlSessionFactory sqlSessionFactory; @PostConstruct public void registerTypeHandler() { TypeHandlerRegistry registry = sqlSessionFactory.getConfiguration().getTypeHandlerRegistry(); registry.register(StatusEnum.class, EnumOrdinalTypeHandler.class); }以上三种都可以进行相关类型的处理类配置,建议直接使用第二种。
完整的MybatisConfig类:
/** * mybaits配置 * @author oKong * */ @Configuration @MapperScan("cn.lqdev.learning.springboot.chapter35.biz.mapper")//mapper地址 public class MybatisConfig { //使用 SqlSessionFactory 类获取 TypeHandlerRegistry 进行注册 // @Autowired // SqlSessionFactory sqlSessionFactory; // // @PostConstruct // public void registerTypeHandler() { // TypeHandlerRegistry registry = sqlSessionFactory.getConfiguration().getTypeHandlerRegistry(); // registry.register(StatusEnum.class, EnumOrdinalTypeHandler.class); // } /** * * <p>函数名称: ConfigurationCustomizer </p> * <p>功能说明: 自定义相关注册器 * * </p> *<p>参数说明:</p> * @return * * @date 创建时间:2018年12月2日 * @author 作者:oKong */ @Bean public ConfigurationCustomizer configurationCustomizer() { ConfigurationCustomizer config = new ConfigurationCustomizer() { @Override public void customize(org.apache.ibatis.session.Configuration configuration) { // TypeAliasRegistry typeAliasRegistry = configuration.getTypeAliasRegistry(); // mapper接口注册器 // MapperRegistry mapperRegistry = configuration.getMapperRegistry(); // 类型处理器 TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); typeHandlerRegistry.register(StatusEnum.class, EnumOrdinalTypeHandler.class); } }; return config; } } 参考资料 总结本章节主要简单介绍了mybatis集成的两种模式。两种模式各有特点,注解版适合简单快速的模式,而xml方式适合相对复杂的sql语句,写在xml中,可以进行统一修改,而不需要去修改java代码。对于原生使用mybatis而言,感觉也是比较简单的,就是写起语句比较麻烦,都需要手动去编写。对于代码生成器,大家可执行搜索相关材料下,大致看了下有点麻烦。所以还是选择一个脚手架吧,mybatis-plus是一个很好的选择。当然了其他的脚手架框架了,大家可自行根据实际情况进行抉择。前几天去看博客评论时,有人觉得开发本来就很累了还要学习这种小框架,我觉得吧,这些小框架可以节省多少繁琐的工作呀。让开发人员可以专注于业务代码,多美好的一件事情呀。将近两星期没有写,可能写的有些乱了,大家可以直接下载源码示例进行查看下,原本想分开两个工程进行讲解,感觉也没有必要,就合并在一起了,通过不同的环境配置进行切换,还请谅解呀!
最后