我们刚接触使用SSH框架项目,不宜涉及太深,第一次就按部就班的写代码(网上许多用 注释来编写代码十分简便,往后新项目我也会用idea写流行框架SSM分享给大家,还会运用spring boot、spring cloud),但是现在我们认真学习第一个框架,其他框架便万变不离其宗,我们一样可以灵活掌握。
我们要理解整个项目是如何运行的,数据是如何在JSP,action,service,dao,数据库中传输的。
1. jsp中通过form表单在struts.xml文件中找到所对应的action层方法
2. action通过spring创建Bean实例对象(编写applicationContext.xml文件会自动创建Bean)引用service层方法
3. service同样通过spring创建Bean实例对象引用dao层方法
4.****dao层继承HibernateDaoSupport编写hql语句(hiberante使用的是HQL语句)操作映射对象,从而更改数据库数据
在开始创建对象之前,我们安装一个hibernate的小插件JBoss Tools,大大方便我们编写代码。
安装中记住只选择hibernate tools部分即可
这个插件可以帮助我们快速生成对象的hbm.xml文件。完成之后会重启eclipse。
我们先做个简单的测试,测试spring整合hibernate,看spring能否自动创建Bean实例并用Hibernate模版操作数据库。(不测试的话,后面再整合struts,报错时错误就很难发现是什么问题)
在cn.itcast.model.user包下创建User.java
package cn.itcast.model.user;
public class User {
private Integer userId;
private String userName;
private String userPassword;
private String userRealName;
public User(){};
public User(String userName,String userPassword,String userRealName){
this.userName=userName;
this.userPassword=userPassword;
this.userRealName=userRealName;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserRealName() {
return userRealName;
}
public void setUserRealName(String userRealName) {
this.userRealName = userRealName;
}
}
在cn.itcast.service.user包下创建service方法接口,并创建实现类继承这个接口
package cn.itcast.service.user;
import cn.itcast.model.user.User;
public interface UserService {
public void save(User user);
}
package cn.itcast.service.user;
import cn.itcast.dao.user.UserDao;
import cn.itcast.model.user.User;
public class UserServiceImpl implements UserService {
//实例化UserDao的Bean
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save(User user) {
//调用UserDao的save方法
this.userDao.save(user);
}
}
在cn.itcast.dao.user包下创建dao方法接口,并创建实现类继承这个接口
package cn.itcast.dao.user;
import cn.itcast.model.user.User;
public interface UserDao {
public void save(User user);
}
package cn.itcast.dao.user;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import cn.itcast.model.user.User;
//继承HibernateDaoSupport模版、UserDao接口
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@Override
public void save(User user) {
//保存User信息
this.getHibernateTemplate().save(user);
}
}
最后生成User对象的hbm.xml文件
右键在User.java对象
最后生成User.hbm.xml文件,修改一下属性
//生成的文件可以把UserID改为ID
//改成native,主键自增
然后我们来修改一下上篇博客留下的配置文件
在applicationContext.xml中添加配置
org.hibernate.dialect.MySQLDialect
true
true
update
none
true
//新增1
cn/itcast/model/user/User.hbm.xml
//新增2
//新增3
我们在navicat中创建dbcard数据库,hibernate会帮我们自动建表,因为这条语句。
update
C3P0.properties文件信息填好
数据库为dbcard
我的数据库帐号为root
密码为123
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///dbcard
jdbc.user=root
jdbc.password=123
新创建包cn.itcast.test,下面创建TestAPP.java
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.model.user.User;
import cn.itcast.service.user.UserService;
public class TestAPP {
@Test
public void test() {
User user=new User();
user.setUserName("12138");
user.setUserPassword("12580");
user.setUserRealName("博客测试");
String xmlPath="applicationContext.xml";
ApplicationContext ac=new ClassPathXmlApplicationContext(xmlPath);
UserService userService=ac.getBean("userService",UserService.class);
userService.save(user);
}
}
最后我们运行这个测试用例。
如果Console下提示hql语句,那么恭喜你成功了!
最后,有什么问题,或者哪里报错,可以评论,我们一一为大家解答!