- 浏览: 333505 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
孙艳霞111:
java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model -
llnyxxzj:
如果问题未解决可以看看http://blog.360chwl. ...
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bea -
u013810758:
楼主求帮助类 ReflectionUtils,Hibernat ...
BaseDao可以这样设计 -
rankx:
你好,楼主可否发一份 ReflectionUtils,Hibe ...
BaseDao可以这样设计
package org.ks4j.orm.hibernate; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.persistence.MappedSuperclass; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.ks4j.orm.Compositor; import org.ks4j.orm.Filtration; import org.ks4j.orm.PageData; import org.ks4j.utils.HibernateUtils; import org.ks4j.utils.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.Assert; /** * dao基类. * 1:该类封装了最常见数据库操作的方法,你可以继承该类,添加自己喜欢的方法 * 2:当你有多个sessionFactory时,你也可以在你的子类中重写setSessionFactory()方法 * * * @param <T> 实体类类型 */ @SuppressWarnings("unchecked") @MappedSuperclass public class BaseDao<T> { protected Logger logger = LoggerFactory.getLogger(getClass()); protected SessionFactory sessionFactory; protected Class<T> entityClass; //操作SQL语句的模板 private JdbcTemplate jdbcTemplate; //注入Spring JdbcTemplate 对象 @Resource(name="jdbcTemplate") public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } /** * 构造方法 */ public BaseDao() { this.entityClass = ReflectionUtils.getSuperClassGenricType(getClass()); } /** * 采用@Resource(name="xxx")按名称注入SessionFactory, 当有多个SesionFactory的时候Override本函数. */ @Resource public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * 取得Session. */ public Session getSession() { return sessionFactory.getCurrentSession(); } //-------------------------------------------------------------------------------------------------- /** * 新增对象. */ public void save(T entity) { Assert.notNull(entity, "entity不能为空"); getSession().save(entity); logger.debug("save entity: {}", entity); } /** * 修改对象. */ public void update(T entity) { Assert.notNull(entity, "entity不能为空"); getSession().update(entity); logger.debug("update entity: {}", entity); } /** * 删除对象. */ public void delete(T entity) { Assert.notNull(entity, "entity不能为空"); getSession().delete(entity); logger.debug("delete entity: {}", entity); } /** * 删除对象. */ public void delete(String id) { delete(findById(id)); logger.debug("delete entity {},id is {}", entityClass.getSimpleName(), id); } /** * 按id获取对象. */ public T findById(String id) { Assert.notNull(id, "id不能为空"); return (T) getSession().get(entityClass, id); } /** * 按属性查找唯一对象,匹配方式为相等. */ public T find(String fieldName, Object fieldValue) { Assert.hasText(fieldName, "fieldName不能为空"); Criterion criterion = Restrictions.eq(fieldName, fieldValue); return (T) HibernateUtils.createCriteria(getSession(), entityClass, criterion).uniqueResult(); } /** * 按属性查找对象列表,匹配方式为相等. */ public List<T> findList(String fieldName, Object fieldValue) { Assert.hasText(fieldName, "fieldName不能为空"); Criterion criterion = Restrictions.eq(fieldName, fieldValue); return HibernateUtils.createCriteria(getSession(), entityClass, criterion).list(); } /** * 按照过滤条件对象查找对象列表. */ public List<T> findList(Filtration... filtrations) { Criteria criteria = HibernateUtils.createCriteria(getSession(), entityClass); //设置过滤条件 criteria = HibernateUtils.setFiltrationParameter(criteria, filtrations); return criteria.list(); } /** * 按照过滤条件对象查找对象列表. */ public List<T> findList(List<Filtration> filtrationList) { Criteria criteria = HibernateUtils.createCriteria(getSession(), entityClass); //设置过滤条件 criteria = HibernateUtils.setFiltrationParameter(criteria, filtrationList); return criteria.list(); } /** * 按照过滤条件对象查找对象列表,支持排序. */ public List<T> findList(Compositor compositor, Filtration... filtrations) { Criteria criteria = HibernateUtils.createCriteria(getSession(), entityClass); //设置过滤条件 criteria = HibernateUtils.setFiltrationParameter(criteria, filtrations); //设置排序 criteria = HibernateUtils.setCompositorParameter(criteria, compositor); return criteria.list(); } /** * 按照过滤条件对象查找对象列表,支持排序. */ public List<T> findList(Compositor compositor, List<Filtration> filtrationList) { Criteria criteria = HibernateUtils.createCriteria(getSession(), entityClass); //设置过滤条件 criteria = HibernateUtils.setFiltrationParameter(criteria, filtrationList); //设置排序 criteria = HibernateUtils.setCompositorParameter(criteria, compositor); return criteria.list(); } /** * 获取全部对象. */ public List<T> findAll() { List<Map<String,Object>> list = jdbcTemplate.queryForList("select * from sys_role"); for(Map item:list){ System.out.println(item.toString()); } return findList(); } /** * 获取全部对象,支持排序. */ public List<T> findAll(Compositor compositor) { return findList(compositor); } /** * 分页查询. */ public PageData<T> find(PageData<T> pageData) { Assert.notNull(pageData, "pageData不能为空"); Criteria criteria = HibernateUtils.createCriteria(getSession(), entityClass); HibernateUtils.setParameter(criteria, pageData); pageData.setResult(criteria.list()); // jdbcTemplate.qu return pageData; } /** * 根据分页查询. */ // c.name=:name and c.password=:password .setEntity("name") public PageData<T> find(String hql, Map<String, ?> values, PageData<T> pageData) { Assert.notNull(pageData, "pageData不能为空"); Query query = HibernateUtils.createQuery(getSession(), hql, values) .setFirstResult(pageData.getPagination().getCurrentlyPageFirstResoultIndex()) .setMaxResults(pageData.getPagination().getPageSize()); pageData.setResult(query.list()); return pageData; } /** * 按id列表获取对象. */ public List<T> findListByIds(List<String> idList) { if (idList != null && idList.size() >= 1) { Criterion criterion = Restrictions.in("id", idList); return HibernateUtils.createCriteria(getSession(), entityClass, criterion).list(); } else { return null; } } //-------------------------------------------------------------------------------------------------- /** * 按HQL查询唯一对象. * @param hql "from Users where name=? and password=?" * @param values 数量可变的参数,按顺序绑定. * @return */ public <X> X find(String hql, Object... values) { return (X) HibernateUtils.createQuery(getSession(), hql, values).uniqueResult(); } /** * 按HQL查询唯一对象. * @param hql "from Users where name=:name and password=:password" * @param values 命名参数,按名称绑定. * @return */ public <X> X find(String hql, Map<String, ?> values) { return (X) HibernateUtils.createQuery(getSession(), hql, values).uniqueResult(); } /** * 按HQL查询对象列表. * @param hql "from Users where name=? and password=?" * @param values 数量可变的参数,按顺序绑定. * @return */ public <X> List<X> findList(String hql, Object... values) { return HibernateUtils.createQuery(getSession(), hql, values).list(); } /** * 按HQL查询对象列表. * @param hql "from Users where name=:name and password=:password" * @param values 命名参数,按名称绑定. * @return */ public <X> List<X> findList(String hql, Map<String, ?> values) { return HibernateUtils.createQuery(getSession(), hql, values).list(); } /** * 执行HQL进行批量修改/删除操作. * @return 更新记录数. */ public int batchExecute(String hql, Object... values) { return HibernateUtils.createQuery(getSession(), hql, values).executeUpdate(); } /** * 执行HQL进行批量修改/删除操作. * @return 更新记录数. */ public int batchExecute(String hql, Map<String, ?> values) { return HibernateUtils.createQuery(getSession(), hql, values).executeUpdate(); } //-------------------------------------------------------------------------------------------------- /** * 本地SQL查询. * @return 查询List. */ public List find(String sql) { Assert.hasText(sql, "sql不能为空"); return getSession().createSQLQuery(sql).list(); } }
评论
2 楼
u013810758
2014-11-07
楼主求帮助类 ReflectionUtils,HibernateUtils 547717007@qq.com
1 楼
rankx
2013-07-04
你好,楼主可否发一份 ReflectionUtils,HibernateUtils
发表评论
-
toString
2013-09-28 11:00 876implements java.lang.Cloneabl ... -
匿名内部类 是否可以继承其它类,是否可以实现接口
2013-06-25 11:20 1491Inner Class(内部类)定义在类中的类。 Nested ... -
JAVA中的接口和抽象类(转)
2013-06-25 11:16 837在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是 ... -
【解惑】领略Java内部类的“内部”
2013-06-25 10:57 840标签:Java 职场 休闲 内 ... -
Java内部类的使用小结
2013-06-25 10:51 974标签:Java 内部类 休闲 职场 内部类是指在一个外部类的内 ... -
java内部类的作用分析
2013-06-25 10:16 935提起Java内部类(Inner Class)可能很多人不太熟悉 ... -
java中Class.forName的作用
2013-06-20 11:36 1076http://www.cnblogs.com/pyrmkj/a ... -
编写你自己的单点登录(SSO)服务
2013-06-18 16:15 985http://blog.csdn.net/javachanne ... -
Windows和Linux环境下Memcached安装与配置
2013-06-08 14:32 950来源http://www.cnblogs.com/xd502d ... -
windows下安装memcached
2013-06-08 11:52 911来源http://kevin-gzhz.iteye.c ... -
分布式缓存系统Memcached学习心得(转)
2013-06-08 10:40 902来源http://www.blogjava.net/sword ... -
Java中的值传递和引用传递
2013-05-24 17:04 884来源http://www.cnblogs.com/clara/ ... -
java中的值传递和引用传递
2013-05-24 16:51 847来源http://www.blogjava.net/jiafa ... -
java自定义注解
2013-05-24 14:23 4843来源http://www.cnblogs.com/xd502d ... -
【状态保持】会话状态Session解析以及原理分析
2013-05-21 17:16 996来源http://www.cnblogs.com/wl ... -
log4j 详解
2013-05-21 16:16 882http://www.blogjava.net/hwpok/a ... -
静态导入Static import
2013-05-21 11:55 937http://www.cnblogs.com/mengdd/a ... -
Java 可变参数
2013-05-21 11:49 839http://www.cnblogs.com/whgw/arc ... -
java枚举类型
2013-05-21 11:45 926http://www.cnblogs.com/Fskjb/ar ... -
Struts2数据传输的背后机制:ValueStack(值栈)(转载)
2013-05-17 14:40 1090http://www.blogjava.net/freeman ...
相关推荐
NULL 博文链接:https://zhaoshijie.iteye.com/blog/2003209
这样,就可以像操作类一样,来操作数据表。 "图书管理系统"的数据模型需要开发4个实体类,分别为: Borrow类:用于保存、设置、获取借阅信息的属性。 Book类:用于保存、设置、获取图书的属性。 Reader类:用于保存...
运用springMVC框架,jdbc连接数据库,BaseDao实现生成统一CURD接口
BaseDao:通过longHaul方法进行数据库的修改,插入 Help:帮助界面的设计 Today:获取当前系统时间并输出 JDBC:数据库驱动 Resultdriver:司机信息查询结果的输出 Resultcarmess:车辆信息查询结果的输出 Resultbusi...
结合目前网上购物平台系统的设计方案,本项目具有以下特点:界面设计美观大方、操作简单。功能完善、结构清晰。普通用户的购物操作。能够实现后台用户和商品管理。能够实现推荐商品的操作。能够实现后台对用户、订单...
a、类的设计 采用DAO模式开发此系统,需要定义如下类 实体类(Student) id name password age description sex 数据库连接和关闭类工具类(BaseDao) DAO接口(StudentDao) DAO实现类(StudentDaoImpl)...
在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文。并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。更好交流,在信息时代人们通过个人...
自己编写的BaseDao,使用反射、线程池等技术,可以直接调用数据库,方便毕业设计.
在web层和dao层都提取了公共代码封装到BaseAction和BaseDao中,提高了代码的复用,同时按照OO设计原则,针对接口编程,而不是针对实现编程。 使用拦截器的方法对系统权限进行初步控制(后续可以采用Shiro框架进行...
在web层和dao层都提取了公共代码封装到BaseAction和BaseDao中,提高了代码的复用性,同时遵循OO设计原则,接口是针对编程的,而不是针对实现编程的。 使用拦截器的方法对系统权限进行初步控制(后续可以采用Shiro...
05_005_云R记_数据库设计.mp4 06_006_云R记_环境搭建.mp4 07_007_云R记_分层思想.mp4 08_008_云R记_获取数据库连接.mp4 09_009_云R记_使用单元测试.mp4 10_010_云R记_使用日志.mp4 11_011_云R记_用户模块_用户登录_...
集合了酒店管理系统课程设计的文档、代码等,需要用户更改源码的的dao文件夹中BaseDao.java中的MySQL数据库信息--登录名以及密码等
如果还看不懂,那么你可以把工程中的“BaseDAO.未完全使用反向的写法”文档替换原来的BaseDAO试看看,我想如果替换之后,你一定能看懂反射的代码了。如果还看不懂????那我也没有办法了^_^ 阅读对象:所有立志...
Spring2.5,Struts2,Hibernate3.3集成,使用BaseService和BaseDao设计,减少了重复性的工作 如果有问题可以到http://fatkun.com问。。
2. DAO 设计 3. BaseDAO 实现 4. BookDAO 实现 5. 翻页实现 6. 翻页小结 7. 查看图书详细信息 8. 加入购物车 9. 购物车操作 10. Ajax 修改购物车单品数量 11. 简单验证和复杂验证 12. 剩余的 DAO 代码 13. 实现结账...
2、简单的数据库路由:如果分库结构不是太复杂(比如简单的读写分离、或者多个库集成),BaseDao可以自 动进行路由(比如读写分离,根据业务模式指定读、写库),如果非默认的路由规则,也可以通过手动设置的模式,...
function BaseDAO($config) { $this->_db = new MysqlDB(); // 这里的不能进行操作 } /** * 获取处理 * * @param array $filter // 过滤条件 * @param string $field // 获取字段 * @param int $pa
·basedao: 基础数据库操作类——数据库驱动, 查询等操作。 ·BookDao: 图书数据操作类。 ·ReaderDao: 用户数据操作类。 Util包: ·Constant: 系统常量类。 ·DataUtils: 日期工具类。 ·GlobalVar:...
否则只能查看 11) Dao 操作优化 BaseDao.java 所有dao的通用方法,dao都必须继承此类 (反射泛型)实现步骤代码:1) 设计数据库:
3. 将项目中src/com/hr/dao/Basedao.java配置文件中的数据库配置改为本人的配置; 4. 运转项目,输入http://localhost:8080/login.jsp 登录 管理员账号/密码:admin/admin 用户账号/密码: user/123456 # 环境需要 ...