前言
1.为节省时间,博主提供了一个已经写好基础SpringMVC代码的Demo,读者可以试着在此基础上修改。https://github.com/Wuchenwcf/MyCode/tree/master/SpringBase
2.本文最终完整代码托管在本人github:https://github.com/Wuchenwcf/MyCode/tree/master/SpringHibernateDemo/SpringBase
3.有关Hibernate的一些基础概念可参考本人博文:http://blog.csdn.net/luchengtao11/article/details/70856689
4.文中并未贴出所有代码,请读者自行到上述连接中下载源码,如有问题,请留言。
5.最终项目发布在本人服务器:http://www.chongfer.cn/SpringBase/
一、代码整体框架如下
分为config、Dao、domain、Service、和web层。
二、数据库设计
三、关键代码
1.Hibernate的配置
package com.wcf.SpringHibernate.config;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
@Configuration
public class HibernateConfig {
private String driverClassName="com.mysql.jdbc.Driver";
private String jdbcURL="jdbc:mysql://www.chongfer.cn:3306/mw2017";
private String username="root";
private String password="";
@Bean
public SessionFactory sessionFactory()
{
try
{
LocalSessionFactoryBean lsfb=new LocalSessionFactoryBean();
lsfb.setDataSource(dataSource());
lsfb.setPackagesToScan(new String[]{"com.wcf.SpringHibernate.domain","com.wcf.SpringHibernate.dao"});
Properties props=new Properties();
//设置方言,采用的是mysql
props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
lsfb.setHibernateProperties(props);
lsfb.afterPropertiesSet();
SessionFactory object=lsfb.getObject();
return object;
}
catch(IOException e)
{
System.out.println(e.toString());
return null;
}
}
@Bean
public DataSource dataSource()
{
BasicDataSource ds=new BasicDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(this.jdbcURL);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
}
2.Dao层
package com.wcf.SpringHibernate.dao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.wcf.SpringHibernate.domain.User;
@Transactional
@Repository
public class UserDaoImp implements UserDao{
@Autowired
private SessionFactory sessionFactory;
private Session getSession()
{
Session session;
try {
session = sessionFactory.getCurrentSession();
} catch (HibernateException e) {
session = sessionFactory.openSession();
}
return session;
}
public void addUser(User user) {
// TODO Auto-generated method stub
this.getSession().save(user);
}
public String getUseNameById(int id) {
// TODO Auto-generated method stub
String hql="SELECT username from User where id =?";
Query query=this.getSession().createQuery(hql).setInteger(0, 1);
String str=query.uniqueResult().toString();
return str;
}
}
3.Service层
package com.wcf.SpringHibernate.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.wcf.SpringHibernate.dao.UserDao;
import com.wcf.SpringHibernate.domain.User;
@Transactional
@Service
public class UserServiceImp implements UserService{
@Autowired
private UserDao userDao;
public String getUserNameById(int id) {
// TODO Auto-generated method stub
return userDao.getUseNameById(id);
}
public void savaBook(User user) {
// TODO Auto-generated method stub
userDao.addUser(user);
}
}
4.测试:
package com.wcf.SpringHibernate.test;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import com.wcf.SpringHibernate.config.RootConfig;
import com.wcf.SpringHibernate.config.WebConfig;
import com.wcf.SpringHibernate.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class, RootConfig.class})
@WebAppConfiguration
public class ServiceTest {
@Autowired
private UserService userService;
@Test
public void userServiceTest(){
int id=1;
String s=userService.getUserNameById(id);
System.out.println(s);
}
}