4-33.BOS项目-修改密码功能-DAO抽取公共更新方法讲解【适用于Hibernate】
User.hbm.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.gyf.bos.model.User" table="t_user"> <id name="id" column="id"> <generator class="uuid"></generator> </id> <property name="username" column="username"/> <property name="password" column="password"/> <property name="salary" column="salary"/> <property name="birthday" column="birthday"/> <property name="gender" column="gender"/> <property name="station" column="station"/> <property name="telephone" column="telephone"/> <property name="remark" column="remark"/> </class> <query name="updatePwd">UPDATE User SET password=? WHERE id=?</query> </hibernate-mapping>
IBaseDao
/** * 公共的更新方法 * @param hql * @param objs */ public void excuteUpdate(String hql,Object...objs); /** * 公共的更新方法 * @param queryName 在映射文件中配置映射的query名字 * @param objs */ public void excuteUpdateByQueryName(String queryName,Object...objs);
BaseDaoImpl
@Override public void excuteUpdate(String hql, Object... objs) { //1.设置session 注意:与当前session绑定的线程是不需要关闭的 Session session = hibernateTemplate.getSessionFactory().getCurrentSession(); //2.获取 查询对象 Query query = session.createQuery(hql); //3.设置参数 for(int i=0;i<objs.length;i++){ query.setParameter(i,objs[i]); } //4/执行 query.executeUpdate(); } @Override public void excuteUpdateByQueryName(String queryName, Object... objs) { //1.设置session 注意:与当前session绑定的线程是不需要关闭的 Session session = hibernateTemplate.getSessionFactory().getCurrentSession(); //2.从映射文件中查找hql,并返回query对象 Query query =session.getNamedQuery(queryName); //3.设置参数 for(int i=0;i<objs.length;i++){ query.setParameter(i,objs[i]); } //4/执行 query.executeUpdate(); }

浙公网安备 33010602011771号