SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库
来源:互联网 发布:软件设计师难考吗 编辑:程序博客网 时间:2024/06/05 05:00
- SSH与SSM学习之SSH整合08Spring整合Hibernate环境操作数据库
- 一整合说明
- 二UserDao
- 1 UserDao
- 2 UserDaoImpl
- 三Spring中配置
- 四测试与结果
- 1 测试代码
- 2 结果
- 五源码下载
SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库
一、整合说明
这里整合其实主要就是 DAO 的操作。DAO操作的时候,我们可以有两种方式的操作。
第一种 就是我们像平时一样创建一个DAO的实现类,包含一个 HibernateTemplate 的对象,
在Spring中配置的时候,注入 HibernateTemplate 的实例。当然 HibernateTemplate 中
包含了一个 SessionFactory 的对象,我们也需要自己出入,这样就需要注入两步。
第二种 就是我们像平时一样创建一个DAO的实现类,并且让它继承自 HibernateDaoSupport,
在Spring中配置的时候,我们只需要注入 SessionFactory 就行了。
下面我们使用的是第二种。
二、UserDao
2.1 UserDao
package com.qwm.ssh_crm.dao;import com.qwm.ssh_crm.domain.User;/** * @author:qiwenming * @date:2017/11/4 0004 17:24 * @description: */public interface UserDao { //根据登陆名称查询user对象 User getByUserCode(String usercode); //保存用户 void save(User u);}
2.2 UserDaoImpl
package com.qwm.ssh_crm.dao.impl;import com.qwm.ssh_crm.dao.UserDao;import com.qwm.ssh_crm.domain.User;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Restrictions;import org.hibernate.query.Query;import org.springframework.orm.hibernate5.HibernateCallback;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import java.util.List;/** * @author:qiwenming * @date:2017/11/4 0004 17:25 * @description: */public class UserDaoImpl extends HibernateDaoSupport implements UserDao{// @Override// public User getByUserCode(String usercode) {// //HQL方式查询// return getHibernateTemplate().execute(new HibernateCallback<User>() {// @Override// public User doInHibernate(Session session) throws HibernateException {// String sql = "from User where user_code=?";// Query query = session.createQuery(sql);// query.setParameter(0,usercode);// User user = (User)query.uniqueResult();// return user;// }// });// } @Override public User getByUserCode(String usercode) { //Criteria 方式查询 //是一个离线 Criteria DetachedCriteria dc = DetachedCriteria.forClass(User.class); dc.add(Restrictions.eq("user_code",usercode)); List<User> list = (List<User>) getHibernateTemplate().findByCriteria(dc); if(list!=null && list.size()>0) return list.get(0); return null; } @Override public void save(User u) { getHibernateTemplate().save(u); }}
三、Spring中配置
最主要的配置
<!--dao配置--> <bean name="userDao" class="com.qwm.ssh_crm.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
完整的 applicationContext.xml配置
<?xml version="1.0" encoding="UTF-8" ?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd "> <!--Action配置 手动组装依赖 必须配置为多例模式--> <bean name="userAction" class="com.qwm.ssh_crm.web.action.UserAction" scope="prototype"> <property name="userService" ref="userService"/> </bean> <!--Service配置--> <bean name="userService" class="com.qwm.ssh_crm.service.UserServiceImpl"/> <!-- 指定spring读取db.properties配置 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 将连接池放入spring容器 --> <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!--装配连接池--> <property name="dataSource" ref="dataSource"/> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <!-- 可选配置 --> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 --> <property name="mappingDirectoryLocations" value="classpath:com/qwm/ssh_crm/domain"></property> </bean> <!--dao配置--> <bean name="userDao" class="com.qwm.ssh_crm.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean></beans>
四、测试与结果
4.1 测试代码
package com.qwm.test;import com.qwm.ssh_crm.dao.UserDao;import com.qwm.ssh_crm.domain.User;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;/** * @author:qiwenming * @date:2017/11/4 0004 17:38 * @description: */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class DaoTest { @Resource(name = "userDao") private UserDao ud; /** * UserDao中 get测试 */ @Test public void test1(){ User user = ud.getByUserCode("wm"); System.out.println(user); }}
4.2 结果
Hibernate: alter table cst_linkman add constraint FKh9yp1nql5227xxcopuxqx2e7q foreign key (lkm_cust_id) references cst_customer (cust_id)Hibernate: select this_.user_id as user_id1_2_0_, this_.user_code as user_cod2_2_0_, this_.user_name as user_nam3_2_0_, this_.user_password as user_pas4_2_0_, this_.user_state as user_sta5_2_0_ from sys_user this_ where this_.user_code=?User [user_id=1, user_code=wm, user_name=wiming, user_password=123456]
五、源码下载
https://github.com/wimingxxx/ssh_crm
阅读全文
0 0
- SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库
- SSH与SSM学习之SSH整合06——Hibernate与Spring整合
- SSH与SSM学习之SSH整合04——Struts2与Spring整合
- SSH与SSM学习之SSH整合07——Spring整合c3p0连接池
- SSH与SSM学习之SSH整合05——单独配置Hibernate
- SSH与SSM学习之SSH整合01——SSH整合原理和导包
- SSH与SSM学习之SSH整合02——单独配置Spring容器
- SSH与SSM学习之SSH整合09——Spring的aop事务
- SSH与SSM学习之Spring10——Spring与junit整合测试
- ssh环境搭建——spring与hibernate整合
- SSH与SSM学习之Spring18——Spring整合JDBC
- SSH与SSM学习之SSH整合03——单独配置Struts2
- SSH与SSM学习之SSH整合10——扩大session作用范围
- SSH与SSM学习之SSH整合11——实现登录功能
- 【SSH】Spring与Hibernate整合
- ssh整合:spring与hibernate的整合
- SSH整合学习笔记之spring与hibernate简单整合.doc
- SSH整合学习笔记之spring与hibernate整合(二)--C3P0
- 纪念碑谷第七章(乌鸦巢)
- java程序员从笨鸟到菜鸟之(十九)常用类Calendar和Date
- SSH与SSM学习之SSH整合07——Spring整合c3p0连接池
- Linux shell(四)
- 网络编程(二)TCP面向连接服务 三次握手和四次挥手
- SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库
- 大数相减模拟
- 用递归法和非递归法求第N个斐波那契数
- 第九周作业:学费管理
- mRemoeNG安装
- C++细节点记录
- 牛客网的OJ要求
- SSH与SSM学习之SSH整合09——Spring的aop事务
- 解决有道笔记不显示背景图片问题