接着来!
我们以把三个框架都导进来了,接上来我把JAR包给出来,如下图:
大家把多余的jar文件删除(在WEB-INF/lib下)。然后我们开始创建实体类和映射文件,我们找到“DB Browser”选项卡,如下
在我们前面建的数据库连接"mysql"上右键--Open connection...开始连接数据库。如下图:
点击那个小三角找到我们要找的库“test”,然后在库中找到我们要创建映射的表,我这里是user表,表中字段有三个,id intege他是主键,username varchar(45) 用户名,password varchar(45)密码。
然后我们在要创建映射的表上点右键,选择“Hibernate Reverse Engineering...”弹出对话框,如下图:
按照上图配置:先选择映射文件要存放的路径(点java package 后面的那个“Browser”按钮,选择MySSH项目下的一个包,我建的包叫:com.zgh.hibernate.vo,大家也可在上图中看一下我的目录结构),然后按图钩选即可,说明上面图片中有。最后点“Next”进入下一步,如图:
在上图中选择主键生成方式,按图选择即可。点“Finish”完成。
生成两个文件在com.zgh.hibernate.vo中,如下图(包括我项目的路径情况,大家可参考):
这样实体类和其映射文件就创建完成了。我们要修改一个User.hbm.xml文件,把catalog="test"删除,否则Hibernate生成的SQL会出错。下面给出User.hbm.xml的代码,如下:
<! DOCTYPE hibernate - mapping PUBLIC " -//Hibernate/Hibernate Mapping DTD 3.0//EN "
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd " >
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
< hibernate - mapping >
< class name = " com.zgh.hibernate.vo.User " table = " user " >
< id name = " id " type = " java.lang.Integer " >
< column name = " id " />
< generator class = " increment " />
</ id >
< property name = " username " type = " java.lang.String " >
< column name = " username " length = " 45 " not - null = " true " />
</ property >
< property name = " password " type = " java.lang.String " >
< column name = " password " length = " 45 " not - null = " true " />
</ property >
</ class >
</ hibernate - mapping >
User.java代码:
* @author zhu国辉
*/
package com.zgh.hibernate.vo;
/** */ /**
* User generated by MyEclipse - Hibernate Tools
*/
public class User implements java.io.Serializable ... {
// Fields
private Integer id;
private String username;
private String password;
// Constructors
/** *//** default constructor */
public User() ...{
}
/** *//** full constructor */
public User(String username, String password) ...{
this.username = username;
this.password = password;
}
// Property accessors
public Integer getId() ...{
return this.id;
}
public void setId(Integer id) ...{
this.id = id;
}
public String getUsername() ...{
return this.username;
}
public void setUsername(String username) ...{
this.username = username;
}
public String getPassword() ...{
return this.password;
}
public void setPassword(String password) ...{
this.password = password;
}
}
接下来我们创建Dao层,我们在com.zgh.spring.dao中创建一个接口和一类实现类:
IUserLoginDao.java代码:
* @author zhu国辉
*/
package com.zgh.spring.dao;
import java.util.List;
public interface IUserLoginDao ... {
List getUser(String username,String password);
}
UserLoginDao.java代码:
* @author zhu国辉
*/
package com.zgh.spring.dao;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/** */ /**
* 记住一定要引入org.springframework.orm.(hibernate3).support.HibernateDaoSupport
* 也就是此类的父类.
* @author zhu国辉
*
*/
public class UserLoginDao extends HibernateDaoSupport implements IUserLoginDao ... {
public List getUser(String username, String password) ...{
List users=getHibernateTemplate().find("from User u where username=? and password=?",new Object[]...{username,password});
return users;
}
}
以上是Dao层,通过Spring提供的Hibernate模板,实现持久层的操作。比单用Hibernate代码少多了,不用开启和关闭事务和session。
接下来是service层,我们会把事务添加到这层里,这一层一般会把Action中Form的数据转换成实体类给Dao层用,但本例只做登陆,没有体现出来。
我们在com.zgh.spring.service包中创建一个接口和一个实现类。IUserLoginService.java接口代码:
* @author zhu国辉
*/
package com.zgh.spring.service;
import java.util.List;
public interface IUserLoginService ... {
List getUser(String username,String password);
}
UserLoginService.java代码:
* @author zhu国辉
*/
package com.zgh.spring.service;
import java.util.List;
import com.zgh.spring.dao.IUserLoginDao;;
public class UserLoginService implements IUserLoginService ... {
private IUserLoginDao userLoginDao;
public void setUserLoginDao(IUserLoginDao userLoginDao) ...{
this.userLoginDao = userLoginDao;
}
public List getUser(String username, String password) ...{
return userLoginDao.getUser(username, password);
}
}