當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring 整合hibernate
生活随笔
收集整理的這篇文章主要介紹了
Spring 整合hibernate
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、首先導入包 1)spring的IOC包 2)數據庫驅動 3)c3p0連接池 4)hibernate核心包(10個) 5)spring整合orm包 2、然后創(chuàng)建實體類 package?star.july.entity; public?class?Student { ??????????private?int?id; ??????????private?String?name; ??????????private?String?gender; ??????????public?int?getId() { ???????????????????return?id; ??????????} ??????????public?void?setId(int?id) { ???????????????????this.id?= id; ??????????} ??????????public?String getName() { ???????????????????return?name; ??????????} ??????????public?void?setName(String name) { ???????????????????this.name?= name; ??????????} ??????????public?String getGender() { ???????????????????return?gender; ??????????} ??????????public?void?setGender(String gender) { ???????????????????this.gender?= gender; ??????????} ??????????@Override ??????????public?String toString() { ???????????????????return?"Student [id="?+?id?+?", name="?+?name?+?", gender="?+?gender ??????????????????????????????????????+?"]"; ??????????} ?????????? } 3、編寫對象的關系映射文件:Student.hbm.xml <?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate Mapping DTD 3.0//EN"?"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?> <hibernate-mapping> ??????????<class?name="star.july.entity.Student"?table="t_student"> ???????????????????<id?name="id"> ?????????????????????????????<generator?class="native"></generator> ???????????????????</id> ???????????????????<property?name="name"?column="sname"></property> ???????????????????<property?name="gender"></property> ??????????</class> </hibernate-mapping> 4、創(chuàng)建dao package?star.july.dao; import?java.util.List; import?star.july.entity.Student; public?interface?IStudentDao?{ ????public?List<Student>?queryAll(); ????public?Student findById(int?id); ????public?int?findCount(); ????//查詢分頁 ????public?List<Student>?fingByPages(int?curPage,int?pageSize); ????//模糊查詢 ????public?List<Student>?query(String name); }
StudentDaoImpl.java package?star.july.dao; import?java.util.List; import?org.hibernate.HibernateException; import?org.hibernate.Query; import?org.hibernate.Session; import?org.springframework.orm.hibernate4.HibernateCallback; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao?{ ????//接收HibernateTemplate對象:用于完成hibernate的操作 ????private?HibernateTemplate hibernateTemplate; ???? ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查找全部學生 ????@Override ????public?List<Student>?queryAll()?{ ????????return?hibernateTemplate.loadAll(Student.class); ????} ????//添加學生 ????public?void?save(Student s){ ????????hibernateTemplate.save(s); ????} ????@Override ????public?Student findById(int?id)?{ ????????return?hibernateTemplate.get(Student.class,?id); ????} ????//查詢分頁 ????public?List<Student>?fingByPages(final?int?curPage,final?int?pageSize){ ????????return?hibernateTemplate.execute(new?HibernateCallback<List<Student>>(){ ????????????@Override ????????????public?List<Student>?doInHibernate(Session session) ????????????????????throws?HibernateException?{ ????????????????Query query?=?session.createQuery("from Student"); ????????????????query.setFirstResult((curPage-1)*pageSize); ????????????????query.setMaxResults(pageSize); ????????????????return?query.list(); ????????????} ????????}); ????} ????//查找總數量 ????@Override ????public?int?findCount()?{ ????????return?hibernateTemplate.execute(new?HibernateCallback<Long>()?{ ????????????@Override ????????????public?Long doInHibernate(Session session)?throws?HibernateException?{ ????????????????Query query?=?session.createQuery("select count(s) from Student s"); ????????????????return?(Long)?query.uniqueResult(); ????????????} ????????}).intValue(); ????} ???? ????//模糊查詢 ????public?List<Student>?query(String name){ ????????return?(List<Student>)hibernateTemplate.find("select s from Student s where name like ?",?"%"+name+"%"); ????} }
5、配置applicationContext.xml <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ??????? http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ??????????<context:property-placeholder?location="classpath:db.properties"/> ?????????? ??????????<!--? 1、創(chuàng)建連接池對象 --> ??????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"> ???????????????????<!-- 注入參數 --> ???????????????????<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ???????????????????<property?name="driverClass"?value="${driverClass}"></property> ???????????????????<property?name="user"?value="${user}"></property> ???????????????????<property?name="password"?value="${password}"></property> ??????????</bean> ?????????? ??????????<!-- 2、創(chuàng)建SessionFactory(spring改造后的LocalSessionFactoryBean) --> ??????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ???????????????????<!-- 注入連接池 --> ???????????????????<property?name="dataSource"?ref="dataSourceID"></property> ???????????????????<!-- 注入hibernate環(huán)境配置:方言,是否顯示sql,是否維護表 --> ???????????????????<property?name="hibernateProperties"> ?????????????????????????????<props> ??????????????????????????????????????<prop ????????????????????????????????????????????????key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ????????????????????????????????????????????????<prop?key="hibernate.show_sql">true</prop> ????????????????????????????????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ?????????????????????????????</props> ???????????????????</property> ???????????????????<!-- 注入映射文件的路徑 --> ???????????????????<property?name="mappingLocations"> ?????????????????????????????<array> ???????????????????????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ?????????????????????????????</array> ???????????????????</property> ??????????</bean> ?????????? ??????????<!-- 3、創(chuàng)建HibernateTemplate對象 --> ??????????<bean?id="hibernateTemplateID" ??????????class="org.springframework.orm.hibernate4.HibernateTemplate"> ???????????????????<!-- 注入SessionFactory對象 --> ???????????????????<property?name="sessionFactory"?ref="sessionFactoryID"/> ??????????</bean> ?????????? ??????????<!-- 創(chuàng)建dao對象 --> ??????????<bean?id="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ???????????????????<!-- 注入HibernateTemplate對象 --> ???????????????????<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ??????????</bean> ??????? </beans>
properties文件:db.properties jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
6、測試 package?star.july.test; import?java.util.List; import?org.junit.Test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.ClassPathXmlApplicationContext; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?Demo { ??????????public?static?void?main(String[] args) { ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? System.out.println(stuDao.queryAll()); ??????????} ?????????? ??????????//根據id查找學生 ??????????@Test ??????????public?void?test(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? Student s = stuDao.findById(2); ?????????????? System.out.println(s); ??????????} ?????????? ??????????//分頁查找 ??????????@Test ??????????public?void?test2(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.fingByPages(2, 2); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} ?????????? ??????????//查找總數 ??????????@Test ??????????public?void?test3(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????int?count = stuDao.findCount(); ???????????????????System.out.println(count); ??????????} ?????????? ??????????//模糊查詢 ??????????@Test ??????????public?void?test4(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.query("莫"); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} } 1、首先導入包 1)spring的IOC包 2)數據庫驅動 3)c3p0連接池 4)hibernate核心包(10個) 5)spring整合orm包 2、然后創(chuàng)建實體類 package?star.july.entity; public?class?Student { ??????????private?int?id; ??????????private?String?name; ??????????private?String?gender; ??????????public?int?getId() { ???????????????????return?id; ??????????} ??????????public?void?setId(int?id) { ???????????????????this.id?= id; ??????????} ??????????public?String getName() { ???????????????????return?name; ??????????} ??????????public?void?setName(String name) { ???????????????????this.name?= name; ??????????} ??????????public?String getGender() { ???????????????????return?gender; ??????????} ??????????public?void?setGender(String gender) { ???????????????????this.gender?= gender; ??????????} ??????????@Override ??????????public?String toString() { ???????????????????return?"Student [id="?+?id?+?", name="?+?name?+?", gender="?+?gender ??????????????????????????????????????+?"]"; ??????????} ?????????? } 3、編寫對象的關系映射文件:Student.hbm.xml <?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate Mapping DTD 3.0//EN"?"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?> <hibernate-mapping> ??????????<class?name="star.july.entity.Student"?table="t_student"> ???????????????????<id?name="id"> ?????????????????????????????<generator?class="native"></generator> ???????????????????</id> ???????????????????<property?name="name"?column="sname"></property> ???????????????????<property?name="gender"></property> ??????????</class> </hibernate-mapping> 4、創(chuàng)建dao package?star.july.dao; import?java.util.List; import?star.july.entity.Student; public?interface?IStudentDao?{ ????public?List<Student>?queryAll(); ????public?Student findById(int?id); ????public?int?findCount(); ????//查詢分頁 ????public?List<Student>?fingByPages(int?curPage,int?pageSize); ????//模糊查詢 ????public?List<Student>?query(String name); }
StudentDaoImpl.java package?star.july.dao; import?java.util.List; import?org.hibernate.HibernateException; import?org.hibernate.Query; import?org.hibernate.Session; import?org.springframework.orm.hibernate4.HibernateCallback; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao?{ ????//接收HibernateTemplate對象:用于完成hibernate的操作 ????private?HibernateTemplate hibernateTemplate; ???? ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查找全部學生 ????@Override ????public?List<Student>?queryAll()?{ ????????return?hibernateTemplate.loadAll(Student.class); ????} ????//添加學生 ????public?void?save(Student s){ ????????hibernateTemplate.save(s); ????} ????@Override ????public?Student findById(int?id)?{ ????????return?hibernateTemplate.get(Student.class,?id); ????} ????//查詢分頁 ????public?List<Student>?fingByPages(final?int?curPage,final?int?pageSize){ ????????return?hibernateTemplate.execute(new?HibernateCallback<List<Student>>(){ ????????????@Override ????????????public?List<Student>?doInHibernate(Session session) ????????????????????throws?HibernateException?{ ????????????????Query query?=?session.createQuery("from Student"); ????????????????query.setFirstResult((curPage-1)*pageSize); ????????????????query.setMaxResults(pageSize); ????????????????return?query.list(); ????????????} ????????}); ????} ????//查找總數量 ????@Override ????public?int?findCount()?{ ????????return?hibernateTemplate.execute(new?HibernateCallback<Long>()?{ ????????????@Override ????????????public?Long doInHibernate(Session session)?throws?HibernateException?{ ????????????????Query query?=?session.createQuery("select count(s) from Student s"); ????????????????return?(Long)?query.uniqueResult(); ????????????} ????????}).intValue(); ????} ???? ????//模糊查詢 ????public?List<Student>?query(String name){ ????????return?(List<Student>)hibernateTemplate.find("select s from Student s where name like ?",?"%"+name+"%"); ????} }
5、配置applicationContext.xml <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ??????? http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ??????????<context:property-placeholder?location="classpath:db.properties"/> ?????????? ??????????<!--? 1、創(chuàng)建連接池對象 --> ??????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"> ???????????????????<!-- 注入參數 --> ???????????????????<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ???????????????????<property?name="driverClass"?value="${driverClass}"></property> ???????????????????<property?name="user"?value="${user}"></property> ???????????????????<property?name="password"?value="${password}"></property> ??????????</bean> ?????????? ??????????<!-- 2、創(chuàng)建SessionFactory(spring改造后的LocalSessionFactoryBean) --> ??????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ???????????????????<!-- 注入連接池 --> ???????????????????<property?name="dataSource"?ref="dataSourceID"></property> ???????????????????<!-- 注入hibernate環(huán)境配置:方言,是否顯示sql,是否維護表 --> ???????????????????<property?name="hibernateProperties"> ?????????????????????????????<props> ??????????????????????????????????????<prop ????????????????????????????????????????????????key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ????????????????????????????????????????????????<prop?key="hibernate.show_sql">true</prop> ????????????????????????????????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ?????????????????????????????</props> ???????????????????</property> ???????????????????<!-- 注入映射文件的路徑 --> ???????????????????<property?name="mappingLocations"> ?????????????????????????????<array> ???????????????????????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ?????????????????????????????</array> ???????????????????</property> ??????????</bean> ?????????? ??????????<!-- 3、創(chuàng)建HibernateTemplate對象 --> ??????????<bean?id="hibernateTemplateID" ??????????class="org.springframework.orm.hibernate4.HibernateTemplate"> ???????????????????<!-- 注入SessionFactory對象 --> ???????????????????<property?name="sessionFactory"?ref="sessionFactoryID"/> ??????????</bean> ?????????? ??????????<!-- 創(chuàng)建dao對象 --> ??????????<bean?id="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ???????????????????<!-- 注入HibernateTemplate對象 --> ???????????????????<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ??????????</bean> ??????? </beans>
properties文件:db.properties jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
6、測試 package?star.july.test; import?java.util.List; import?org.junit.Test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.ClassPathXmlApplicationContext; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?Demo { ??????????public?static?void?main(String[] args) { ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? System.out.println(stuDao.queryAll()); ??????????} ?????????? ??????????//根據id查找學生 ??????????@Test ??????????public?void?test(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? Student s = stuDao.findById(2); ?????????????? System.out.println(s); ??????????} ?????????? ??????????//分頁查找 ??????????@Test ??????????public?void?test2(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.fingByPages(2, 2); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} ?????????? ??????????//查找總數 ??????????@Test ??????????public?void?test3(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????int?count = stuDao.findCount(); ???????????????????System.out.println(count); ??????????} ?????????? ??????????//模糊查詢 ??????????@Test ??????????public?void?test4(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.query("莫"); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} }
StudentDaoImpl.java package?star.july.dao; import?java.util.List; import?org.hibernate.HibernateException; import?org.hibernate.Query; import?org.hibernate.Session; import?org.springframework.orm.hibernate4.HibernateCallback; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao?{ ????//接收HibernateTemplate對象:用于完成hibernate的操作 ????private?HibernateTemplate hibernateTemplate; ???? ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查找全部學生 ????@Override ????public?List<Student>?queryAll()?{ ????????return?hibernateTemplate.loadAll(Student.class); ????} ????//添加學生 ????public?void?save(Student s){ ????????hibernateTemplate.save(s); ????} ????@Override ????public?Student findById(int?id)?{ ????????return?hibernateTemplate.get(Student.class,?id); ????} ????//查詢分頁 ????public?List<Student>?fingByPages(final?int?curPage,final?int?pageSize){ ????????return?hibernateTemplate.execute(new?HibernateCallback<List<Student>>(){ ????????????@Override ????????????public?List<Student>?doInHibernate(Session session) ????????????????????throws?HibernateException?{ ????????????????Query query?=?session.createQuery("from Student"); ????????????????query.setFirstResult((curPage-1)*pageSize); ????????????????query.setMaxResults(pageSize); ????????????????return?query.list(); ????????????} ????????}); ????} ????//查找總數量 ????@Override ????public?int?findCount()?{ ????????return?hibernateTemplate.execute(new?HibernateCallback<Long>()?{ ????????????@Override ????????????public?Long doInHibernate(Session session)?throws?HibernateException?{ ????????????????Query query?=?session.createQuery("select count(s) from Student s"); ????????????????return?(Long)?query.uniqueResult(); ????????????} ????????}).intValue(); ????} ???? ????//模糊查詢 ????public?List<Student>?query(String name){ ????????return?(List<Student>)hibernateTemplate.find("select s from Student s where name like ?",?"%"+name+"%"); ????} }
5、配置applicationContext.xml <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ??????? http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ??????????<context:property-placeholder?location="classpath:db.properties"/> ?????????? ??????????<!--? 1、創(chuàng)建連接池對象 --> ??????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"> ???????????????????<!-- 注入參數 --> ???????????????????<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ???????????????????<property?name="driverClass"?value="${driverClass}"></property> ???????????????????<property?name="user"?value="${user}"></property> ???????????????????<property?name="password"?value="${password}"></property> ??????????</bean> ?????????? ??????????<!-- 2、創(chuàng)建SessionFactory(spring改造后的LocalSessionFactoryBean) --> ??????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ???????????????????<!-- 注入連接池 --> ???????????????????<property?name="dataSource"?ref="dataSourceID"></property> ???????????????????<!-- 注入hibernate環(huán)境配置:方言,是否顯示sql,是否維護表 --> ???????????????????<property?name="hibernateProperties"> ?????????????????????????????<props> ??????????????????????????????????????<prop ????????????????????????????????????????????????key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ????????????????????????????????????????????????<prop?key="hibernate.show_sql">true</prop> ????????????????????????????????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ?????????????????????????????</props> ???????????????????</property> ???????????????????<!-- 注入映射文件的路徑 --> ???????????????????<property?name="mappingLocations"> ?????????????????????????????<array> ???????????????????????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ?????????????????????????????</array> ???????????????????</property> ??????????</bean> ?????????? ??????????<!-- 3、創(chuàng)建HibernateTemplate對象 --> ??????????<bean?id="hibernateTemplateID" ??????????class="org.springframework.orm.hibernate4.HibernateTemplate"> ???????????????????<!-- 注入SessionFactory對象 --> ???????????????????<property?name="sessionFactory"?ref="sessionFactoryID"/> ??????????</bean> ?????????? ??????????<!-- 創(chuàng)建dao對象 --> ??????????<bean?id="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ???????????????????<!-- 注入HibernateTemplate對象 --> ???????????????????<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ??????????</bean> ??????? </beans>
properties文件:db.properties jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
6、測試 package?star.july.test; import?java.util.List; import?org.junit.Test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.ClassPathXmlApplicationContext; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?Demo { ??????????public?static?void?main(String[] args) { ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? System.out.println(stuDao.queryAll()); ??????????} ?????????? ??????????//根據id查找學生 ??????????@Test ??????????public?void?test(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? Student s = stuDao.findById(2); ?????????????? System.out.println(s); ??????????} ?????????? ??????????//分頁查找 ??????????@Test ??????????public?void?test2(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.fingByPages(2, 2); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} ?????????? ??????????//查找總數 ??????????@Test ??????????public?void?test3(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????int?count = stuDao.findCount(); ???????????????????System.out.println(count); ??????????} ?????????? ??????????//模糊查詢 ??????????@Test ??????????public?void?test4(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.query("莫"); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} } 1、首先導入包 1)spring的IOC包 2)數據庫驅動 3)c3p0連接池 4)hibernate核心包(10個) 5)spring整合orm包 2、然后創(chuàng)建實體類 package?star.july.entity; public?class?Student { ??????????private?int?id; ??????????private?String?name; ??????????private?String?gender; ??????????public?int?getId() { ???????????????????return?id; ??????????} ??????????public?void?setId(int?id) { ???????????????????this.id?= id; ??????????} ??????????public?String getName() { ???????????????????return?name; ??????????} ??????????public?void?setName(String name) { ???????????????????this.name?= name; ??????????} ??????????public?String getGender() { ???????????????????return?gender; ??????????} ??????????public?void?setGender(String gender) { ???????????????????this.gender?= gender; ??????????} ??????????@Override ??????????public?String toString() { ???????????????????return?"Student [id="?+?id?+?", name="?+?name?+?", gender="?+?gender ??????????????????????????????????????+?"]"; ??????????} ?????????? } 3、編寫對象的關系映射文件:Student.hbm.xml <?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate Mapping DTD 3.0//EN"?"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?> <hibernate-mapping> ??????????<class?name="star.july.entity.Student"?table="t_student"> ???????????????????<id?name="id"> ?????????????????????????????<generator?class="native"></generator> ???????????????????</id> ???????????????????<property?name="name"?column="sname"></property> ???????????????????<property?name="gender"></property> ??????????</class> </hibernate-mapping> 4、創(chuàng)建dao package?star.july.dao; import?java.util.List; import?star.july.entity.Student; public?interface?IStudentDao?{ ????public?List<Student>?queryAll(); ????public?Student findById(int?id); ????public?int?findCount(); ????//查詢分頁 ????public?List<Student>?fingByPages(int?curPage,int?pageSize); ????//模糊查詢 ????public?List<Student>?query(String name); }
StudentDaoImpl.java package?star.july.dao; import?java.util.List; import?org.hibernate.HibernateException; import?org.hibernate.Query; import?org.hibernate.Session; import?org.springframework.orm.hibernate4.HibernateCallback; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao?{ ????//接收HibernateTemplate對象:用于完成hibernate的操作 ????private?HibernateTemplate hibernateTemplate; ???? ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查找全部學生 ????@Override ????public?List<Student>?queryAll()?{ ????????return?hibernateTemplate.loadAll(Student.class); ????} ????//添加學生 ????public?void?save(Student s){ ????????hibernateTemplate.save(s); ????} ????@Override ????public?Student findById(int?id)?{ ????????return?hibernateTemplate.get(Student.class,?id); ????} ????//查詢分頁 ????public?List<Student>?fingByPages(final?int?curPage,final?int?pageSize){ ????????return?hibernateTemplate.execute(new?HibernateCallback<List<Student>>(){ ????????????@Override ????????????public?List<Student>?doInHibernate(Session session) ????????????????????throws?HibernateException?{ ????????????????Query query?=?session.createQuery("from Student"); ????????????????query.setFirstResult((curPage-1)*pageSize); ????????????????query.setMaxResults(pageSize); ????????????????return?query.list(); ????????????} ????????}); ????} ????//查找總數量 ????@Override ????public?int?findCount()?{ ????????return?hibernateTemplate.execute(new?HibernateCallback<Long>()?{ ????????????@Override ????????????public?Long doInHibernate(Session session)?throws?HibernateException?{ ????????????????Query query?=?session.createQuery("select count(s) from Student s"); ????????????????return?(Long)?query.uniqueResult(); ????????????} ????????}).intValue(); ????} ???? ????//模糊查詢 ????public?List<Student>?query(String name){ ????????return?(List<Student>)hibernateTemplate.find("select s from Student s where name like ?",?"%"+name+"%"); ????} }
5、配置applicationContext.xml <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ??????? http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ??????????<context:property-placeholder?location="classpath:db.properties"/> ?????????? ??????????<!--? 1、創(chuàng)建連接池對象 --> ??????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"> ???????????????????<!-- 注入參數 --> ???????????????????<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ???????????????????<property?name="driverClass"?value="${driverClass}"></property> ???????????????????<property?name="user"?value="${user}"></property> ???????????????????<property?name="password"?value="${password}"></property> ??????????</bean> ?????????? ??????????<!-- 2、創(chuàng)建SessionFactory(spring改造后的LocalSessionFactoryBean) --> ??????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ???????????????????<!-- 注入連接池 --> ???????????????????<property?name="dataSource"?ref="dataSourceID"></property> ???????????????????<!-- 注入hibernate環(huán)境配置:方言,是否顯示sql,是否維護表 --> ???????????????????<property?name="hibernateProperties"> ?????????????????????????????<props> ??????????????????????????????????????<prop ????????????????????????????????????????????????key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ????????????????????????????????????????????????<prop?key="hibernate.show_sql">true</prop> ????????????????????????????????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ?????????????????????????????</props> ???????????????????</property> ???????????????????<!-- 注入映射文件的路徑 --> ???????????????????<property?name="mappingLocations"> ?????????????????????????????<array> ???????????????????????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ?????????????????????????????</array> ???????????????????</property> ??????????</bean> ?????????? ??????????<!-- 3、創(chuàng)建HibernateTemplate對象 --> ??????????<bean?id="hibernateTemplateID" ??????????class="org.springframework.orm.hibernate4.HibernateTemplate"> ???????????????????<!-- 注入SessionFactory對象 --> ???????????????????<property?name="sessionFactory"?ref="sessionFactoryID"/> ??????????</bean> ?????????? ??????????<!-- 創(chuàng)建dao對象 --> ??????????<bean?id="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ???????????????????<!-- 注入HibernateTemplate對象 --> ???????????????????<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ??????????</bean> ??????? </beans>
properties文件:db.properties jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
6、測試 package?star.july.test; import?java.util.List; import?org.junit.Test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.ClassPathXmlApplicationContext; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?Demo { ??????????public?static?void?main(String[] args) { ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? System.out.println(stuDao.queryAll()); ??????????} ?????????? ??????????//根據id查找學生 ??????????@Test ??????????public?void?test(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ?????????????? IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ?????????????? Student s = stuDao.findById(2); ?????????????? System.out.println(s); ??????????} ?????????? ??????????//分頁查找 ??????????@Test ??????????public?void?test2(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.fingByPages(2, 2); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} ?????????? ??????????//查找總數 ??????????@Test ??????????public?void?test3(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????int?count = stuDao.findCount(); ???????????????????System.out.println(count); ??????????} ?????????? ??????????//模糊查詢 ??????????@Test ??????????public?void?test4(){ ???????????????????ApplicationContext ac =?new?ClassPathXmlApplicationContext("/applicationContext.xml"); ???????????????????IStudentDao stuDao = (IStudentDao)ac.getBean("studentDaoID"); ???????????????????List<Student> list = stuDao.query("莫"); ???????????????????for(Student s : list){ ?????????????????????????????System.out.println(s); ???????????????????} ??????????} }
總結
以上是生活随笔為你收集整理的Spring 整合hibernate的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring JDBC整合
- 下一篇: Spring 整合Struts2