、引用茶叶写的一个baseDAO
package com.juno.dao.service;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;
/**
* 所有Dao类的父类
*
* @author macrotea 2011-2-31
* @param <T>
*/
@Component("baseDao")
public class BaseDao<T, ID> extends HibernateDaoSupport {
private static final Logger logger = LoggerFactory.getLogger(BaseDao.class);
/**
* 设置Dao将操作的实体
*/
private Class<T> entityClazz;
public Class<T> getEntityClazz() {
return entityClazz;
}
public void setEntityClazz(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
public BaseDao() {
super();
}
public BaseDao(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
/**
* 设置hibernateTemplate所需的SessionFactory
*/
@Resource
public void setLocalSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
/**
* 获得所有实体记录
*/
@SuppressWarnings("unchecked")
public List<T> findAll() throws Exception {
return getHibernateTemplate().find("FROM " + entityClazz.getSimpleName());
}
/**
* 保存一个实体
*/
@SuppressWarnings("unchecked")
public ID save(T obj) throws Exception {
return (ID) getHibernateTemplate().save(obj);
}
/**
* 保存/更新一个实体
*/
public void saveOrUpdate(T obj) throws Exception {
getHibernateTemplate().saveOrUpdate(obj);
}
/**
* 根据id获得一个实体
*/
@SuppressWarnings("unchecked")
public T findById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().get(entityClazz, id);
if (retVal == null) {
logger.debug("get:该ID:" + id + " 的实体不存在!");
}
return retVal;
}
/**
* 根据id加载一个实体
*/
@SuppressWarnings("unchecked")
public T loadById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().load(entityClazz, id);
return retVal;
}
/**
* 根据id删除一个实体
*/
public void deleteById(int id) throws Exception {
T entity = loadById(id);
if (entity == null) {
String msg = "delete:该ID:" + id + " 的实体不存在!";
throw new Exception(msg);
}
getHibernateTemplate().delete(entity);
}
/**
* 获得所有实体记录总数
*/
@SuppressWarnings("unchecked")
public Long countAll() throws Exception {
List retVal = getHibernateTemplate().find("SELECT count(*) FROM " + entityClazz.getSimpleName());
return (Long) retVal.get(0);
}
/**
* 根据属性和属性值查找
*/
@SuppressWarnings("unchecked")
public List findByProperty(String propertyName, Object value) throws Exception {
System.out.println("findByProperty value:" + value);
List retVal = getHibernateTemplate().find("from " + entityClazz.getSimpleName() + " as model where model." + propertyName + "= ?", value);
return retVal;
}
/**
* 根据多个id查找
*/
public List<T> findByIdArray(Integer[] idArray) throws Exception {
List<T> retVal = new ArrayList<T>();
T model = null;
for (int i = 0; i < idArray.length; i++) {
model = findById(idArray[i]);
retVal.add(model);
}
return retVal;
}
}
然后自己写一个dao类来继承basedao
package com.juno.dao.service.impl;
import org.springframework.stereotype.Component;
import com.juno.bean.Hello;
import com.juno.dao.service.BaseDao;
import com.juno.dao.service.HelloDAO;
/**
* @author Juno
*
*/
@Component("helloDao")
public class HelloDAOImpl extends BaseDao<Hello, Integer> implements HelloDAO {
// property constants
public static final String USERNAME = "username";
public static final String AGE = "age";
/*
* 如下方式调用父类方法:super.XXX()
*/
public HelloDAOImpl() {
super(Hello.class);
}
@Override
public void update(Hello Hello) throws Exception {
}
}
这时候、一定要记住加上
public HelloDAOImpl() {
super(Hello.class);
}
这个构造方法!要不无效!
分享到:
相关推荐
在IT行业中,数据库操作是应用程序开发中的重要环节。"基于BaseDao的手动数据库操作"是一...在实际开发中,使用BaseDao可以大大提高开发效率,但同时也要注意避免过度抽象和通用性问题,确保代码的可维护性和可扩展性。
根据提供的文件信息,我们可以总结出以下关于`BaseDao`标准模板的重要知识点: ### 1. 概述 `BaseDao`(数据访问对象)是一种在Java应用中广泛使用的模式,用于封装对数据库的操作。该模式的主要目的是将业务逻辑...
本项目涉及到的主题是“SpringBoot+MyBatis实现多数据源以及基于BaseDAO的分页功能”。 多数据源是指在一个应用中同时管理多个数据库。这在分布式系统或者需要隔离不同业务数据的场景中非常常见。SpringBoot可以...
自己常用的的一个数据库操作类 注意修改private void setConn()方法为您的connection连接方式
- 在实际应用中,应使用try-with-resources语句来自动关闭资源,以避免资源泄露问题。 - 对于敏感信息如数据库密码等,建议使用环境变量或配置文件进行管理,不要硬编码到代码中。 - 异常处理应该更加细致,可以根据...
Java利用自定义注解、反射实现简单BaseDao实例 Java作为一门强大的编程语言,在实际开发中经常需要与...但是,我们也需要注意到这种方法的局限性,例如,它不支持复杂的查询操作,需要根据实际情况进行修改和扩展。
然而,在实际应用中,特别是当SSH与Spring框架、Hibernate等技术整合时,开发者需注意多个关键点,以确保系统的安全性、稳定性和效率。本文将详细解析在整合SSH时需要注意的重要知识点,帮助开发人员避免常见陷阱,...
值得注意的是,这个代码生成器原生支持MySQL数据库,但可以根据需要修改以适应SQL Server或其他数据库系统。这通常涉及到更改数据源配置、SQL语法以及可能的驱动依赖。 全源码分享意味着用户可以自由地查看、学习和...
Oracle数据库提供了`ROWNUM`伪列来进行分页查询,但在使用时需要注意一些细节。 #### 3. 使用`ROWNUM`伪列 - **获取指定范围的数据**(例如第2至第3条记录): ```sql SELECT ID FROM ( SELECT ID, ROWNUM AS ...
public class AHBaseDaoImpl<T> implements BaseDao<T> { public void flushAndClearSession() { getHibernateTemplate().flush(); getHibernateTemplate().clear(); } } ``` 2. **解决方案**:设计一个基础...
注意:在BaseDAO类有两个重载的方法:findAllTable方法,第一个是使用jstl包的Result接口对象;第二是本人使用集合模拟完成的。关键代码注释非常详细,反复体会之后,你会发现:Oh,手写代码真的很爽!!!^_^
public class BaseDao { private Connection dbConn = null; private Statement stmt = null; private ResultSet rs = null; public void creatConnect() { String driverName = ...
在Java编程中,我们经常会遇到各种实用的代码片段,这些代码可以帮助我们处理日常开发中的常见问题。本篇文章将深入探讨标题“java常有代码”所涵盖的几个关键知识点:Excel的上传与下载、BaseDao接口的使用、日期...
BaseDAO baseDAO = new BaseDAO(); ``` 2. **构造SQL语句:** ```java String sql = "SELECT * FROM pm_pa_billinfo WHERE vbillinfono='" + e.getValue() + "'"; ``` 3. **执行SQL语句并获取结果集:** ```...
在实现过程中,需要注意数据库的异常处理。当出现SQLException时,系统会打印错误信息,并在适当的地方返回null或-1,以便调用者能够捕获并处理这些异常。 总的来说,图书馆管理系统数据库的连接与实现涉及以下关键...
该资源共有七个部分,分别是语言和环境、功能要求、类的设计、具体要求及推荐实现步骤、注意事项和图示。 语言和环境中,要求使用Java语言,JDK 6.0、MyEclipse 10.6和SQL Server 2008作为开发环境。 功能要求部分...
BaseDao basedao = new BaseDao(); Connection con = basedao.getConnection(); if (con == null) { System.out.println("与Oracle数据库连接失败!"); } else { System.out.println("与Oracle数据库连接成功...
要删除一个对象,可以调用`delete()`方法,传入要删除的实体实例,如`delete(TUser persistentInstance)`。Hibernate会自动执行相应的删除SQL语句。 4. **更新(AttachDirty)** `attachDirty()`方法用于更新已...
### 数据库连接在Java Web开发中的重要性及实现方法 #### 标题解析:数据库的连接 在现代软件开发特别是Web应用开发中,数据库作为数据持久化的基础工具扮演着极其重要的...同时也要注意防止SQL注入攻击等安全风险。