重建一个SSH项目
java项目可以直接复制,但是web项目除了改名字还要该配置,如下:
Hibernate配置文件中有哪些内容:
- 数据库连接的配置
- Hibernate属性的配置:方言,显示sql,格式化sql。。。。
- C3P0连接池
- 映射
将Hibernate的核心配置交给Spring:
<!-- 引入外部属性文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置C3P0连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- Spring整合Hibernate --> <!-- 引入Hibernate的配置信息 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 方式二:Hibernate核心配置已去掉 --> <!-- 注入连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 配置Hibernate的相关属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 设置映射文件 --> <property name="mappingResources"> <list> <value>com/itheima/ssh/domain/Customer.hbm.xml</value> </list> </property> </bean>
测试:
Hibernate模版常用方法:
- 增
- 删
- 改
- 查 一个: get(Class c , Serializable id) load(Class c , Serializable id)
- 查多个:list find(String hql,Object...args) list findByCriteria(DetachedCriteria dc) 分页:list findByCriteria(DetachedCriteria dc,int firstResult,int maxResult) 命名查询(了解)
package com.itheima.ssh.dao.impl; import java.util.List; import org.hibernate.criterion.DetachedCriteria; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import com.itheima.ssh.dao.CustomerDao; import com.itheima.ssh.domain.Customer; public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao { @Override public void save(Customer customer) { System.out.println("Dao的save方法执行了"); this.getHibernateTemplate().save(customer); } @Override public void update(Customer customer) { this.getHibernateTemplate().update(customer); } @Override public void delete(Customer customer) { this.getHibernateTemplate().delete(customer); } @Override public Customer findById(Long cust_id) { return this.getHibernateTemplate().get(Customer.class, cust_id); } @Override public List<Customer> findAllByHQL() { List<Customer> list = (List<Customer>) this.getHibernateTemplate().find("from Customer"); return list; } @Override public List<Customer> findAllByQBC() { DetachedCriteria criteria = DetachedCriteria.forClass(Customer.class); List<Customer> list = (List<Customer>) this.getHibernateTemplate().findByCriteria(criteria); return list; } @Override public List<Customer> findByNamedQuery() { return (List<Customer>) this.getHibernateTemplate().findByNamedQuery("queryAll"); } }
package com.itheima.ssh.service.impl; import java.util.List; import org.springframework.transaction.annotation.Transactional; import com.itheima.ssh.dao.CustomerDao; import com.itheima.ssh.domain.Customer; import com.itheima.ssh.service.CustomerService; /** * 客户端的业务层的实现类 */ @Transactional public class CustomerServiceImpl implements CustomerService { //注入Dao private CustomerDao customerDao; public void setCustomerDao(CustomerDao customerDao) { this.customerDao = customerDao; } @Override public void save(Customer customer) { System.out.println("service中的save方法执行了"); customerDao.save(customer); } @Override public void update(Customer customer) { customerDao.update(customer); } @Override public void delete(Customer customer) { customerDao.delete(customer); } @Override public Customer findById(Long cust_id) { return customerDao.findById(cust_id); } @Override public List<Customer> findAllByHQL() { return customerDao.findAllByHQL(); } @Override public List<Customer> findAllByQBC() { return customerDao.findAllByQBC(); } @Override public List<Customer> findByNamedQuery() { return customerDao.findByNamedQuery(); } }