- 浏览: 965545 次
- 性别:
- 来自: 江西上饶
-
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
当使用枚举时,需要使用EnumTypeHandler或者EnumOrdinalTypeHandler作为映射类型,或者自己实现处理器。
<!-- mybatis-config.xml -->
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="java.math.RoundingMode"/>
</typeHandlers>
需要注意的是EnumOrdinalTypeHandler只能处理特定的类型,当我们需要使用真正意义上的枚举,需要使用EnumTypeHandler或者自己实现。
实际上,对于增删改查都需要这么处理。
<resultMap type="org.apache.ibatis.submitted.rounding.User" id="usermap2">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="funkyNumber" property="funkyNumber"/>
<result column="roundingMode" property="roundingMode" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
</resultMap>
<select id="getUser2" resultMap="usermap2">
select * from users2
</select>
<insert id="insert2" parameterType="org.apache.ibatis.submitted.rounding.User">
insert into users2 (id, name, funkyNumber, roundingMode) values (
#{id}, #{name}, #{funkyNumber}, #{roundingMode, typeHandler=org.apache.ibatis.type.EnumTypeHandler}
)
</insert>
当然,mybatis默认已经指定了枚举处理器就是EnumTypeHandler,所以可以不予配置。只要类型设置成了enum。
再看EnumTypeHandler的实现,
当从数据读取值的时候
是通过Enum.valueOf来解析的,这是一种全字匹配的实现方式。
String s = cs.getString(columnIndex);
return s == null ? null : Enum.valueOf(type, s);
如假设
public enum Enum1 {
ONE, TWO, THREE;
}
那么只有当cs.getString(columnIndex); = ONE的时候,才能获取到枚举值ONE;
设置值的时候
ps.setString(i, parameter.toString());
通过toString来处理。
还需要注意的是
EnumTypeHandler
Enumeration类型
VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。
<!-- mybatis-config.xml -->
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="java.math.RoundingMode"/>
</typeHandlers>
需要注意的是EnumOrdinalTypeHandler只能处理特定的类型,当我们需要使用真正意义上的枚举,需要使用EnumTypeHandler或者自己实现。
实际上,对于增删改查都需要这么处理。
<resultMap type="org.apache.ibatis.submitted.rounding.User" id="usermap2">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="funkyNumber" property="funkyNumber"/>
<result column="roundingMode" property="roundingMode" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
</resultMap>
<select id="getUser2" resultMap="usermap2">
select * from users2
</select>
<insert id="insert2" parameterType="org.apache.ibatis.submitted.rounding.User">
insert into users2 (id, name, funkyNumber, roundingMode) values (
#{id}, #{name}, #{funkyNumber}, #{roundingMode, typeHandler=org.apache.ibatis.type.EnumTypeHandler}
)
</insert>
当然,mybatis默认已经指定了枚举处理器就是EnumTypeHandler,所以可以不予配置。只要类型设置成了enum。
再看EnumTypeHandler的实现,
当从数据读取值的时候
是通过Enum.valueOf来解析的,这是一种全字匹配的实现方式。
String s = cs.getString(columnIndex);
return s == null ? null : Enum.valueOf(type, s);
如假设
public enum Enum1 {
ONE, TWO, THREE;
}
那么只有当cs.getString(columnIndex); = ONE的时候,才能获取到枚举值ONE;
设置值的时候
ps.setString(i, parameter.toString());
通过toString来处理。
还需要注意的是
EnumTypeHandler
Enumeration类型
VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。
发表评论
-
深入了解MyBatis参数
2017-05-04 21:12 408深入了解MyBatis参数 http://blog.csdn ... -
MyBatis Generator 详解
2015-08-03 14:00 774http://blog.csdn.net/isea533/ar ... -
ibatis的动态sql
2014-10-23 13:33 949位于包 com.ibatis.sqlmap.engine.ma ... -
mybatis generator tools配置文件解析
2012-12-20 23:28 25439这是mybatis3 generator 配 ... -
问题解决方案
2011-08-22 00:25 24311.Mapped Statements collection ... -
mybatis的参数
2011-06-16 12:36 6442在类DynamicSqlSource 方法 public Bo ... -
与spring结合
2011-05-20 21:58 1250实体省略 maping文件省略 dao接口省略 mybatis ... -
动态sql
2011-05-05 17:54 1277ibatis支持动态的组合sql。 包括动态元素 if ... -
ibatis缓存
2011-05-05 16:38 4523ibatis的session缓存。做了一个测试 <?xm ... -
ibatis官方推荐目录结构
2011-05-05 13:24 1077src/com.liyixing.application.da ... -
sql映射文件
2011-04-30 22:09 2567<?xml version="1.0" ... -
配置文件
2011-04-30 20:17 1815mybatis的配置文件结构 顶级是configuration ... -
session的getMapper方法解析
2011-04-30 17:22 9664跟踪: DefaultSqlSession类 public & ... -
一个简单例子,以及基于接口,class对象调用
2011-04-30 16:59 1338应用结构: IbatisConfiguration.xm ... -
范围和声明周期(对象声明周期)
2011-04-29 23:19 1361先看mybatis用户手册中的一段代码 DataSource ...
评论