* *
* * @author oKong * @since 2018-12-02 */ @Data @Accessors(chain = true) public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1779270373648636358L; /** * 唯一标示 */ private Long id; /** * 编码 */ private String code; /** * 名称 */ private String name; /** * 状态1 启用 0 停用 */ private StatusEnum status; /** * 创建时间 */ private Date gmtCreate; /** * 修改时间 */ private Date gmtModified; } 状态枚举类StatusEnum: public enum StatusEnum { DISABLE, ENABLE; } 配置文件:application.properties # 实体别名 mybatis.type-aliases-package=cn.lqdev.learning.springboot.chapter35.biz.entity # 数据库配置 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/learning?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password= spring.profiles.active=anno 启动类 /** * mybaits集成 * @author oKong * */ @SpringBootApplication @Slf4j public class MybatisApplication { public static void main(String[] args) throws Exception { SpringApplication.run(MybatisApplication.class, args); log.info("spring-boot-mybatis-chapter35启动!"); } } 注解方式 0.创建注解版的mapper: UserMapper.java /** * 注解配置 * @author okong * */ public interface UserMapper { //配置返回的字段类型,这里配置了创建日期和修改日期自动 @Select("select * from user where id = #{id}") @Results({ @Result(column = "gmt_create",property = "gmtCreate",jdbcType=JdbcType.DATE), @Result(column = "gmt_modified",property = "gmtModified",jdbcType=JdbcType.DATE) }) User queryOne(Long id); // 枚举类 默认是使用 EnumTypeHandler 处理类,即使用枚举name作为值 //status 为枚举类 也可以直接指定了 typeHandler类 作为处理类 ,如:#{status,typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler} //还可以在sqlFactory 直接使用 TypeHandlerRegistry 进行注册 详看;MybatisConfig 类 //最简单:自定义 ConfigurationCustomizer 了进行设置 详看;MybatisConfig 类 @Insert("insert into user(code,name,status) values(#{code},#{name}, #{status})") //以下配置会对user对象进行id赋值 @Options(keyProperty="id",keyColumn="id",useGeneratedKeys=true) int insert(User user); @Update("update user set code=#{code}, name = #{name}, status = #{status} where id=#{id}") void update(User user); @Delete("delete from user where id=#{id}") void delete(Long id); @Select("select * from user where code = #{code}") @Results({ @Result(column = "gmt_create",property = "gmtCreate",jdbcType=JdbcType.DATE), @Result(column = "gmt_modified",property = "gmtModified",jdbcType=JdbcType.DATE) }) List函数名称: ConfigurationCustomizer
*功能说明: 自定义相关注册器 * *
*参数说明:
* @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); // } /** * *函数名称: ConfigurationCustomizer
*功能说明: 自定义相关注册器 * *
*参数说明:
* @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; } } 参考资料 http://www.mybatis.org/mybatis-3/zh/ http://www.mybatis.org/spring-boot-starter/mybatis-spring-