From《Mybatis从入门到精通》
1.笔记:
<!-- 6.3 使用枚举或者其他对象 6.3.1 使用MyBatis提供的枚举处理器 不懂: 因为枚举除了本身的字面值外,还可以通过枚举的ordinal()方法获取枚举值的 索引。在这个枚举类中,disabled对应索引为0,enabled对应的索引为1. MyBatis在处理Java类型和数据库类型时,使用TypeHandler(类型处理器),对这 两者进行转换。MyBatis为Java和数据库JDBC中的基本类型和常用的类型提供了 TypeHandler接口实现。MyBatis在启动时会加载所有的JDBC对应的类型处理器,这个 处理器会将枚举类型转换为字符串类型的字面值并使用。对于Enabled而言,便是disabled和 enabled字符串。 也就是说默认的org.apache.ibatis.type.EnumTypeHandler,这个处理器只对枚举 的字面值进行处理,也就是数据库中需要存放着字符串,这样才能够转化成相应的枚举类型 所以不适合当前的情况。MyBatis还提供了org.apache.ibatis.type.EnumOrdinalTypeHandler 处理器,这个处理器使用枚举的索引值进行出来,可以解决此处遇到的问题。要使用 这个处理器,需要在mybatis-config.xml中进行配置: <typeHandlers> <typeHanderl javaType="tk.mybatis.simple.type.Enabled" hadler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </typeHandlers> -->
2.增加的枚举类型:
package tk.mybatis.simple.type; public enum Enabled { disabled,//禁用 enabled; //启用 }
3.对MyBatis配置文件的配置
<typeHandlers> <typeHanderl javaType="tk.mybatis.simple.type.Enabled" hadler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </typeHandlers>
1.笔记:
<!-- 6.3.2 使用过自定义的类型处理器 ——Java枚举类型,我感觉我还是需要看一下, 里面有很多东西,一下子理解不了 ——标记一下,这部分我没有细细的研究。 -->