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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?