- 浏览: 1529337 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.collections.map.LinkedMap; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.usertype.UserType; /** * @author linzq * */ public class MapType implements UserType, Serializable { private static final long serialVersionUID = -8041009346154850427L; public MapType() { super(); } public MapType(Map attributeMap) { super(); this.attributeMap = attributeMap; } private Map attributeMap; public static final String SPLITTER = ";"; public static final String SEPARATOR = ":"; public static final String VALUE_BREAK = ","; public static final char BRACKET_LEFT = '{'; public static final char BRACKET_RIGHT = '}'; public static final int[] SQLTYPES = new int[] { Types.VARCHAR}; public boolean isMutable() { return false; } public int[] sqlTypes() { return SQLTYPES; } public Object assemble(Serializable id, Object obj) throws HibernateException { return null; } /** * 将Map类型的属性拼接成字符串 * * @param attributeList * @return * @throws HibernateException */ public Object assemble(Map attributeMap) throws HibernateException { if (attributeMap == null) { return null; } StringBuffer asbl = new StringBuffer(); Iterator itr = attributeMap.keySet().iterator(); String _key = null; while (itr.hasNext()) { _key = (String) itr.next(); asbl.append(SPLITTER).append(BRACKET_LEFT).append(_key).append(SEPARATOR).append(attributeMap.get(_key)).append(BRACKET_RIGHT); } return asbl.toString().replaceFirst(SPLITTER, ""); } /** * 自定义类型的完全复制方法,返回一个和原自定义数据相同的新对象 * * @param value * the object to be cloned, which may be null * @return Object a copy * @see org.hibernate.usertype.UserType#deepCopy(java.lang.Object) */ public Object deepCopy(Object value) throws HibernateException { if (value == null) { return null; } Map sourceMap = (Map) value; Map targetMap = new HashMap(); targetMap.putAll(sourceMap); return targetMap; } /** * 自定义数据类型的比较方法 * * @param x * @param y * @return boolean * @see org.hibernate.usertype.UserType#equals(java.lang.Object, * java.lang.Object) */ public boolean equals(Object x, Object y) throws HibernateException { if (x == y) { return true; } if (x != null && y != null) { Map xMap = (Map) x; Map yMap = (Map) y; if (xMap.size() != yMap.size()) { return false; } List<String> _xList = new ArrayList(xMap.keySet()); List<String> _yList = new ArrayList(xMap.keySet()); Collections.sort(_xList); Collections.sort(_yList); for (int i = 0; i < xMap.size(); i++) { if (!_xList.get(i).equals(_yList.get(i))) { return false; } if (!xMap.get(_xList.get(i)).equals(yMap.get(_yList.get(i)))) { return false; } } return true; } return false; } public int hashCode(Object arg0) throws HibernateException { return attributeMap.hashCode(); } /** * 将以格式为{key:value};{key:value1,value2}的字符串数组解析成一个Map * * @param value * @return */ public Map parse(String value) { if (value == null) { return null; } String[] strs = org.apache.commons.lang.StringUtils.split(value.trim(), SPLITTER); Map attributeMap = new LinkedMap(); String _temp = null; for (int i = 0; i < strs.length; i++) { _temp = strs[i].substring(1, strs[i].length() - 1); attributeMap.put(_temp.split(SEPARATOR, 2)[0], _temp.split(SEPARATOR, 2)[1]); } return attributeMap; } /** * 从JDBC的ResultSet中读取数据,并将其转换为自定义类型后返回。 此方法要求对可能出现null的情况做处理。 * names中包含了当前自定义类型的映射字段名称。 * * @param rs * a JDBC result set * @param names * the column names * @param owner * the containing entity * @return Object * @throws HibernateException * @throws SQLException * @see org.hibernate.usertype.UserType#nullSafeGet(java.sql.ResultSet, * java.lang.String[], java.lang.Object) */ public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException { String value = (String) Hibernate.STRING.nullSafeGet(rs, names[0]); if (value != null) { attributeMap = parse(value); return attributeMap; } return null; } /** * 在Hibernate进行数据保存时被调用 可以通过PreparedStatement将自定义数据写入对应的数据库字段中 * names中包含了当前自定义类型的映射字段名称。 * * @param st * a JDBC prepared statement * @param value * the object to write * @param index * statement parameter index * @throws HibernateException * @throws SQLException * @see org.hibernate.usertype.UserType#nullSafeGet(java.sql.ResultSet, * java.lang.String[], java.lang.Object) */ public void nullSafeSet(PreparedStatement pst, Object value, int index) throws HibernateException, SQLException { if (value != null) { Hibernate.STRING.nullSafeSet(pst, assemble((Map) value), index); } else { Hibernate.STRING.nullSafeSet(pst, value, index); } } public Class returnedClass() { return MapType.class; } public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException { return null; } public Serializable disassemble(Object arg0) throws HibernateException { return null; } public Map getAttributeMap() { return attributeMap; } public void setAttributeMap(Map attributeMap) { this.attributeMap = attributeMap; } }
import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.usertype.UserType; public class ListType implements UserType { private static final String SPLITTER = ";"; private static final int[] TYPES = new int[] { Types.VARCHAR }; public Object assemble(Serializable serializable, Object object) throws HibernateException { return deepCopy(serializable); } public Object deepCopy(Object object) throws HibernateException { List sourceSet = (List) object; List targetSet = new ArrayList(); if (sourceSet != null) { targetSet.addAll(sourceSet); } return targetSet; } public Serializable disassemble(Object object) throws HibernateException { return (Serializable) deepCopy(object); } public boolean equals(Object one, Object other) throws HibernateException { if (one == other) {// 如果两个对象的指针是指向同一位置。 return true; } if (one != null && other != null) { List set0 = (List) one; List set1 = (List) other; if (set0.size() != set1.size()) {// 如果列表的长度不相等 return false; } Object[] s0 = set0.toArray(); Object[] s1 = set1.toArray(); if (s0.length != s1.length) {// 如果列表的长度不相等 return false; } for (int i = 0; i < s0.length; i++) { Object id0 = s0[i]; Object id1 = s1[i]; if (!id0.equals(id1)) {// 如果在列表中相同位置上的对象不相等 return false; } } return true; } return false; } public int hashCode(Object object) throws HibernateException { List s = (List) object; return s.hashCode(); } public boolean isMutable() { return false; } public Object nullSafeGet(ResultSet resultSet, String[] stringArray, Object object) throws HibernateException, SQLException { String value = (String) Hibernate.STRING.nullSafeGet(resultSet, stringArray[0]); if (value != null) { return parse(value); } else { return new ArrayList(); } } private List parse(String value) { String[] strs = StringUtils.split(value, SPLITTER); List set = new ArrayList(); for (int i = 0; i < strs.length; i++) { if (StringUtils.isNotBlank(strs[i])) { set.add(strs[i]); // set.add(new Long(Long.parseLong(strs[i]))); } } return set; } public void nullSafeSet(PreparedStatement preparedStatement, Object object, int _int) throws HibernateException, SQLException { if (object != null) { String str = assemble((List) object); Hibernate.STRING.nullSafeSet(preparedStatement, str, _int); } else { Hibernate.STRING.nullSafeSet(preparedStatement, "", _int); } } private String assemble(List set) { StringBuffer sb = new StringBuffer(); Iterator it = set.iterator(); while (it.hasNext()) { sb.append(it.next()); sb.append(SPLITTER); } String fs = sb.toString(); if (fs != null && fs.length() > 0 && fs.endsWith(SPLITTER)) { fs = fs.substring(0, fs.length() - 1); } return fs; } public Object replace(Object object, Object object1, Object object2) throws HibernateException { return object; } public Class returnedClass() { return List.class; } public int[] sqlTypes() { return TYPES; } }
d
发表评论
-
Hibernate延迟加载(转)
2014-05-04 15:54 765转自:http://cenjun615.blog.1 ... -
hibernate使用@subselect映射数据库视图
2013-12-21 21:15 3361文档引用:http://software-develope ... -
Hibernate annotation 自定义类型 userType
2013-04-01 17:26 1663第一步:添加自定义类: package com.a.en ... -
c3p0配置
2013-03-11 15:44 987<!--注册数据源 --> <bea ... -
hibernate之查询(设置查询提示) (转)
2012-02-03 15:36 1172转自:http://blog.csdn.net/f ... -
Hibernate的缓存策略(转)
2012-02-03 15:28 900Hibernate 的一级缓存 ... -
如何在spring配置多个Hibernate数据源链接(转)
2012-02-02 15:47 1201一、首先配置hibernate数据源: <?xm ... -
在Hibernate显式使用索引
2011-02-25 19:41 1341http://www.znetdevelopment.com/ ... -
Hibernate中多对多关系映射、保存、查询
2009-10-13 20:13 14217首先是一些基础模型类的建立: import java. ... -
Hibernate HQL 语法大全 查询技巧(2)
2009-09-25 19:10 179911.子查询 ... -
Hibernate HQL 语法大全 查询技巧(1)
2009-09-25 19:10 4992HQL: Hibernate查询语言 ... -
Join用法,HQL的方法,Hibernate中的fetch
2009-09-25 18:47 1778Join用法: 主要有Inner J ... -
xdoclet 2
2009-04-24 10:42 1480XDoclet 2 all XDoclet -&g ... -
hibernate 随机 查询
2009-04-03 21:36 2742/** * 随机取出N条记录 * * @p ... -
XDoclet - discriminator标签
2009-03-14 23:49 2396http://blog.csdn.net/chenjyuj/a ... -
Hibernate UserType 使用xdoclet映射数据库问题
2008-10-18 09:49 1146http://www.hibernate.org/282.ht ... -
Hibernate
2008-08-26 10:42 1140http://www.openfans.net/viewArt ... -
Hibernate 一对一
2008-08-26 10:14 1393//ClassA: import java.io.Seria ...
相关推荐
VC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zip
在VS中配置CUDA时,本身是不识别CUDA关键字的,关键字不能高亮。早期的CUDA版本在SDK中提供了usertype.dat,其中包含CUDA的关键字,但后来的CUDA没有这个文件,网上找了好久,现在贴出来亲测可用~
HLSL的关键字,放在vs的IDE文件下,以在vs中高亮HLSL的关键字
1. 创建或编辑usertype.dat文件(此文件在VS安装目录下的Common7\IDE下面,比如我的就在D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\usertype.dat),添加如下的关键字列表,每个单词占一行,如果你想...
本资源“商业编程-源码-VC开发工具使用技巧源代码 usertype.zip”包含了一组与VC开发相关的源代码,旨在帮助开发者深入理解和掌握VC开发工具的实用技巧。 1. **VC开发环境设置**:VC不仅仅是一个编译器,它还包括一...
UserType type = UserType.valueOf(userType); switch (type) { case STUDENT: // 学生相关的处理逻辑 break; case TEACHER: // 教师相关的处理逻辑 break; case PARENT: // 家长相关的处理逻辑 break; ...
网页短视频管理系统 框架 vs2019 + asp.net webform + sql server 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。...Id UserName PW Sex Explian UserType
网页短视频播客视频管理系统框架 vs2019 + asp.net webform + sql server 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。...Id UserName PW Sex Explian UserType
百度网盘mac
这通常通过实现`org.hibernate.usertype.UserType`接口来完成,该接口定义了将Java类型转换为数据库类型的逻辑。 以下是一些关键步骤: 1. **创建动态扩展的基类**:定义一个基类,它继承自Hibernate的`...
3. **自定义UserType实例**:例如,如果我们需要在`TUSER`表中存储用户的电子邮件,但不想为每个邮箱创建单独的记录,可以使用`UserType`将多个邮箱地址存储在一个`VARCHAR`字段内,以分号分隔。自定义的`Email`类...
例如,创建一个名为`PersonalInfo`的表,包含`Region`、`UserType`、`Income`等字段: ```sql CREATE TABLE PersonalInfo ( ID INT PRIMARY KEY, Region NVARCHAR(50), UserType NVARCHAR(50), Income DECIMAL...
如果要使自定义类型或其他非QMetaType内置类型在QVaiant中使用,必须使用该宏Q_DECLARE_METATYPE。 该类型必须有公有的 构造、析构、复制构造 函数 qRegisterMetaType 必须使用该函数的两种情况:1、如果非QMetaType...
当需要创建自定义项以实现特定功能时,开发者可以使用大于等于`QTreeWidgetItem.UserType`或`QListWidgetItem.UserType`的枚举值。这两个枚举值等于整数1000,它们提供了一个范围,使得开发者可以在1000及其以上设置...
UserType.basic 1000000 abc123! UserType.basic 2000 abc123! UserType.admin 1000000000 abc123! UserType.admin 500000 abc123! UserType.super 250000 abc123! UserType.super 6500000 ...
UPDATE users SET usertype = REPLACE(CAST(usertype AS VARCHAR(255)), '4', '3'); ``` 这里的`CAST()`函数用于将`usertype`列中的数据类型转换为VARCHAR(255),确保REPLACE函数可以正确处理字符串。需要注意的是...
在IT行业中,日志记录是程序调试、性能分析和故障排查的重要工具。在这个"Log_Encapsulation_demo"项目中,开发者采用C++编程语言,利用fstream、ofstream和ifstream库来实现了一个高效且灵活的日志操作类。...
这将生成`UserType`和`ObjectFactory`等类,`UserType`代表XML中的`<user>`元素,可以直接在Java代码中使用。 RESTEasy与JAXB(Java Architecture for XML Binding)紧密集成,JAXB允许你将XML文档与Java对象互相...
这些方法都是 UserType 接口的必备方法,其中 nullSafeGet 方法用于从 ResultSet 中获取 LONG 类型字段的值,而 deepCopy 方法用于深度拷贝 LONG 类型字段的值。 在 Hibernate 框架中,我们可以使用自定义类型来...
2:访问控制:不同类型的user,其权限由usertype规定 3:建立视图用了安全读取数据库中的数据: create view tb_userview as select usernc,usertype,userpwd from tb_user create view tb_userncview as select id,...