MyBatis 使用枚举或其他对象
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枚举类型,我感觉我还是需要看一下,
里面有很多东西,一下子理解不了
——标记一下,这部分我没有细细的研究。
-->
MyBatis 使用枚举或其他对象的更多相关文章
- MyBatis从入门到精通(第6章):6.3 使用枚举或其他对象
6.3 使用枚举或其他对象 在 sys_role 表中存在一个字段 enabled,这个字段只有两个可选值,0 为禁用,1 为启用.但是在 SysRole 类中,我们使用的是 Integer enab ...
- 解决mybatis使用枚举的转换
解决mybatis使用枚举的转换 >>>>>>>>>>>>>>>>>>>>> ...
- mybatis的两个核心对象SqlSessionFactory和SqlSession对象
mybatis的两个核心对象SqlSessionFactory和SqlSession对象 参见:https://www.cnblogs.com/wxdestiny/p/9743686.html
- Win64 驱动内核编程-33.枚举与删除对象回调
转载:http://www.voidcn.com/article/p-wulgeluy-bao.html 枚举与删除对象回调 对象回调存储在对应对象结构体里,简单来说,就是存储在 ObjectType ...
- Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final
笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...
- MyBatis的2个核心对象:SqlSessionFactory、SqlSession
SqlSessionFactory SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,主要作用是创建SqlSession. InputStream inputStream = ...
- mybatis 处理枚举类型
MyBatis支持持久化enum类型属性.假设t_user表中有一列gender(性别)类型为 varchar2(10),存储 MALE 或者 FEMALE 两种值.并且,User对象有一个enum类 ...
- [Effective JavaScript 笔记]第48条:避免在枚举期间修改对象
注册列表示例 一个社交网络有一组成员,每个成员有一个存储其朋友信息的注册列表. function Member(name){ this.name=name; this.friends=[]; } va ...
- Mybatis的基本要素--核心对象
大家好啊,今天呢来说下Mybatis的核心对象,也就是说基本三要素. >核心接口和类. >Mybatis核心配置文件(mybatis-config.xml) >SQL映射文件 一.下 ...
随机推荐
- C#如何将十六进制数字符串转byte[]?
代码: /// <summary> /// 16进制原码字符串转字节数组 /// </summary> /// <param name="hexString&q ...
- PHP trait 特性在 Laravel 中的使用个人心得
trait 是在PHP5.4中为了方便代码复用的一种实现方式,但目前我在看的的PHP项目中较少看的有程序员去主动使用这个实现方式,在laravel中有很多 trait 的使用,关于trait 在 la ...
- 【Windows10 IoT开发系列】Powershell命令行实用程序
原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Admin ...
- MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别
OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过 ...
- Qt for android触摸手势事件QGestureEvent
在触摸设备上可以使用Qt的手势事件 要激活手势事件,需要执行以下操作: 第一步,为QWidget控件注册手势事件 QList<Qt::GestureType> gestures; gest ...
- Wiki上的C++哲学
Philosophy[edit] Throughout C++'s life, its development and evolution has been informally governed b ...
- 使用BCP批量导入数据
本文原创,转载请标明出处 BCP 工具的使用 The bulk copy program utility (bcp) bulk copies data between an instance of M ...
- Memcached在Linux系统下的安装和PHP开启 Memcached的 扩展 超级解决方案
[项目背景]:阿里云ECS服务器,Linux(centos7.2 64位),环境部署使用的是阿里云一键安装包(LAMP)等 [项目需求]:linux安装memcached 和php开启Memcache ...
- xmanager小技巧
使用manager时候,左键选中之后,直接右键粘贴,能带来效率的提升.虽然是小技巧,但有人还是不知道,这里简单写一下,供需要的同学参考. 简单二步设置: 1.工具-选项
- 30441数据定义语言DDL
数据定义:指对数据库对象的定义.删除和修改操作. 数据库对象主要包括数据表.视图.索引等. 数据定义功能通过CREATE.ALTER.DROP语句来完成. 按照操作对象分类来介绍数据定义的SQL语法. ...