代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
仅一行代码完成各种数据库操作
作者:
马德成
/ 发布于
2012/5/26
/
656
仅一行代码完成各种数据库操作,基于spring的HibernateTemplate
import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map;</div> import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Property; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate;</div> <div>public class BaseHibernate { private static HibernateTemplate hibernateTemplate;</div> <div>@SuppressWarnings("static-access") public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } <div>/** * 插入对象 * * @param entity * @return */ public int save(Object entity) { return (Integer) hibernateTemplate.save(entity); } <div>/** * 删除对象 * * @param entity */ public void delete(Object entity) { hibernateTemplate.delete(entity); } <div>/** * 修改对象 * * @param entity */ public void update(Object entity) { hibernateTemplate.update(entity); } <div>/** * 根据ID查询对象 * * @param entityClass * 类名,如:String.class * @param id * ID值 */ public <T> T query(Class<T> entityClass, int id) { return hibernateTemplate.get(entityClass, id); } <div>/** * 查询全部 * * @param className * 类名 * @return */ @SuppressWarnings("unchecked") public <T> List<T> queryAll(Class<?> className) { return hibernateTemplate.find("from " + className.getName()); } <div>/** * 分页 * * @param entityClass * 类名 * @param index * 当前页数 * @param size * 每页显示的大小 * @param order * 排序类型 * @param propertyName * 要排序的属性名 * @return */ @SuppressWarnings("unchecked") public <T> List<T> paging(final Class<?> entityClass, final int index, final int size, final Order order, final String... propertyName) { List<T> list = hibernateTemplate.executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(entityClass); if (propertyName != null && propertyName.length > 0) { switch (order) { case ASC: criteria.addOrder(org.hibernate.criterion.Order .asc(propertyName[0])); break; case DESC: criteria.addOrder(org.hibernate.criterion.Order .desc(propertyName[0])); break; } } criteria.setFirstResult((index - 1) * size); criteria.setMaxResults(size); return criteria.list(); } }); return list; } <div>@SuppressWarnings("unchecked") public long getSumRecord(final Class<?> className) { List<Long> count = new ArrayList<Long>(); count = hibernateTemplate.find("select COUNT(*) from " + className.getName()); return count.size() > 0 ? (count.get(0)) : 0L; } <div>/** * 获取总页数 * * @param className * 类名 * @param size * 每页显示的大小 * @return */ @SuppressWarnings("unchecked") public long sumPage(final Class<?> className, int size) { List<Long> count = new ArrayList<Long>(); count = hibernateTemplate.find("select COUNT(*) from " + className.getName()); return count.size() > 0 ? (count.get(0) - 1 + size) / size : 0L; } <div>/** * 根据字段查询 * * @param params * 字段列表 * @param values * 值列表 * @return */ @SuppressWarnings("unchecked") public <T> List<T> queryByProperty(final Class<?> className, final Map<String, Object> params) { return hibernateTemplate.executeFind(new HibernateCallback() { public List<?> doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(className); for (String field : params.keySet()) criteria.add(Property.forName(field).eq(params.get(field))); return criteria.list(); } }); } <div>/** * 根据字段查询可以分的页数 * * @param className * 要查询的实体类 * @param params * 属性列表 * @param size * 每页显示的大小 * @return */ @SuppressWarnings("unchecked") public long queryByPropertyGetSumPage(final Class<?> className, final Map<String, Object> params, final int size) { List<Integer> object = hibernateTemplate .executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(className); for (String field : params.keySet()) criteria.add(Property.forName(field).eq( params.get(field))); criteria.setProjection(Projections.rowCount()); return criteria.list(); } }); int count = object == null ? 0 : object.get(0); return count > 0 ? (count + size - 1) / size : 0L; } <div>/** * 获取总记录数根据属性 * * @param className * @param params * @param size * @return */ @SuppressWarnings("unchecked") public long queryByPropertyGetSumRecord(final Class<?> className, final Map<String, Object> params) { List<Integer> object = hibernateTemplate .executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(className); for (String field : params.keySet()) criteria.add(Property.forName(field).eq( params.get(field))); criteria.setProjection(Projections.rowCount()); return criteria.list(); } }); return object == null ? 0 : object.get(0); } <div>/** * 根据字段查询并分页显示 * * @param className * 要分页的实体类 * @param params * 字段列表 * @param index * 当前页 * @param size * 每页显示的大小 * @param order * 排序 * @return */ @SuppressWarnings("unchecked") public <T> List<T> queryByPropertyPaging(final Class<?> className, final Map<String, Object> params, final int index, final int size, final Order order, final String... field) { return hibernateTemplate.executeFind(new HibernateCallback() { public List<?> doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(className); for (String f : params.keySet()) criteria.add(Property.forName(f).eq(params.get(f))); if (field != null && field.length != 0) { switch (order) { case ASC: criteria.addOrder(org.hibernate.criterion.Order .asc(field[0])); break; case DESC: criteria.addOrder(org.hibernate.criterion.Order .desc(field[0])); break; } } criteria.setFirstResult((index - 1) * size); criteria.setMaxResults(size); return criteria.list(); } }); } <div>/** * 保存或更新对象 * * @param entity * 对象 */ public void saveOrUpdate(Object entity) { hibernateTemplate.saveOrUpdate(entity); } <div>/** * 批量修改 * * @param queryString * HQL语句 * @return 受影响行数 */ public int bulkUpdate(String queryString) { return hibernateTemplate.bulkUpdate(queryString); } <div>/** * 批量修改 * * @param queryString * HQL语句 * @param values * 参数的值 * @return 受影响行数 */ public int bulkUpdate(String queryString, Object... values) { return hibernateTemplate.bulkUpdate(queryString, values); } <div>/** * 批量删除 * * @param collection * 要删除的集合 */ public void deleteAll(Collection<?> collection) { hibernateTemplate.deleteAll(collection); } <div>/** * 模糊查询 * * @param className * 类名 * @param field * 字段名 * @param value * 值 * @param matchMode * 匹配模式:ANYWHERE->任意位置、END->结束、START->开始、EXACT->精确匹配 */ @SuppressWarnings("unchecked") public <T> List<T> Querylike(final Class<?> className, final String field, final String value, final MatchMode matchMode) { List objects = new ArrayList<Object>(); objects = hibernateTemplate.executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(className); criteria.add(Property.forName(field).like(value, matchMode)); return criteria.list(); } }); return objects; } <div>/** * 执行hql查询语句 * * @param hql * hql语句 * @param values * 值列表 * @return */ @SuppressWarnings("unchecked") public <T> Object executeQuery(final String hql, final Object... values) { return hibernateTemplate.execute(new HibernateCallback() {</div> <div>public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); setParams(query, values); return query.list(); } }); } <div>/** * 查询单个值 * * @param hql * hql语句 * @param values * 参数列表 * @return 返回单个值 */ @SuppressWarnings("unchecked") public <T> Object executeSacale(final String hql, final Object... values) { return hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); setParams(query, values); query.setMaxResults(1); return query.uniqueResult(); } }); } <div>/** * 执行hql删除、修改语句 * * @param hql * hql语句 * @param values * 值列表 * @return */ @SuppressWarnings("unchecked") public int executNonQuery(final String hql, final Object... values) { return hibernateTemplate.execute(new HibernateCallback() { public Integer doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); setParams(query, values); return query.executeUpdate(); } }); } <div>/** * 删除表数据 * @param tableName 表名 */ @SuppressWarnings("unchecked") public void truncate(final String tableName) { hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { session.createSQLQuery("truncate table " + tableName).executeUpdate(); return new ArrayList(); } });</div> <div>} <div>private void setParams(Query query, Object... values) { if (!isEmptyOrNull(values)) { for (int i = 0; i < values.length; i++) { query.setParameter(i, values[i]); } <div>} } <div>/** * 判断值是否为空或 * * @param values * @return */ private boolean isEmptyOrNull(Object... values) { if (values == null || values.length == 0) return true; return false; } <div>}
试试其它关键字
数据库操作
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
马德成
贡献的其它代码
(
4
)
.
线性表之不带头结点的单链表
.
线性表之不带头结点的双向循环链表
.
List
> 转换为 二维数组
.
仅一行代码完成各种数据库操作
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3