SSH名片管理系统(二)——项目架构

编程语言初相遇,一见java误终身

一.准备工作

我们刚接触使用SSH框架项目,不宜涉及太深,第一次就按部就班的写代码(网上许多用 注释来编写代码十分简便,往后新项目我也会用idea写流行框架SSM分享给大家,还会运用spring bootspring cloud),但是现在我们认真学习第一个框架,其他框架便万变不离其宗,我们一样可以灵活掌握。

1.SSH框架

我们要理解整个项目是如何运行的,数据是如何在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,大大方便我们编写代码。
SSH名片管理系统(二)——项目架构_第1张图片
SSH名片管理系统(二)——项目架构_第2张图片
安装中记住只选择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对象
SSH名片管理系统(二)——项目架构_第3张图片
SSH名片管理系统(二)——项目架构_第4张图片
SSH名片管理系统(二)——项目架构_第5张图片
最后生成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

SSH名片管理系统(二)——项目架构_第6张图片

新创建包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语句,那么恭喜你成功了!
SSH名片管理系统(二)——项目架构_第7张图片
SSH名片管理系统(二)——项目架构_第8张图片

最后,有什么问题,或者哪里报错,可以评论,我们一一为大家解答!

你可能感兴趣的:(SSH框架学习)