前言
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。http://blog.csdn.net/hon_3y/article/details/72630031
用户模块:本文主要的知识点:
- 简单的CRUD
- 使用日期组件让用户挑选日期
- 上传和修改头像
用户模块需求
拥有增删改查和导入导出到EXCEL的功能:
这里写图片描述
添加用户:有了这个界面,我们就知道实体表的属性有什么了。
a
添加配置文件
每个模块都应该有自己的配置文件,这样的话就方便我们管理模块之间的功能,不用把所有的配置都写在总文件中。
因此,我们在user模块创建了一个user包,下面又创建了config包来管理配置文件
这里写图片描述
JavaBean与映射文件
JavaBean
根据上面需求要添加用户的属性,直接写就行了。
public class User implements Serializable { private String id; private String dept; private String account; private String name; private String password; private String headImg; private boolean gender; private String state; private String mobile; private String email; private Date birthday; private String memo; public static String USER_STATE_VALID = "1";//有效, public static String USER_STATE_INVALID = "0";//无效 public User() { } public User(String id, String dept, String account, String name, String password, String headImg, boolean gender, String state, String mobile, String email, Date birthday, String memo) { this.id = id; this.dept = dept; this.account = account; this.name = name; this.password = password; this.headImg = headImg; this.gender = gender; this.state = state; this.mobile = mobile; this.email = email; this.birthday = birthday; this.memo = memo; } //各种setter和getter }
User.hbm.xml
映射文件也非常简单,因为没有关联关系字段,直接写属性就行了。
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="zhongfucheng.user.entity.User" table="user"> <id name="id" type="java.lang.String"> <column name="id" length="32" /> <generator class="uuid.hex" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="20" not-null="true" /> </property> <property name="dept" type="java.lang.String"> <column name="dept" length="20" not-null="true" /> </property> <property name="account" type="java.lang.String"> <column name="account" length="50" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="50" not-null="true" /> </property> <property name="headImg" type="java.lang.String"> <column name="headImg" length="100" /> </property> <property name="gender" type="java.lang.Boolean"> <column name="gender" /> </property> <property name="email" type="java.lang.String"> <column name="email" length="50" /> </property> <property name="mobile" type="java.lang.String"> <column name="mobile" length="20" /> </property> <property name="birthday" type="java.util.Date"> <column name="birthday" length="10" /> </property> <property name="state" type="java.lang.String"> <column name="state" length="1" /> </property> <property name="memo" type="java.lang.String"> <column name="memo" length="200" /> </property> </class> </hibernate-mapping>
写完映射文件,记得要在Spring的总配置文件中读取映射文件…值得注意的是,用户模块专门用一个user包来管理下面的代码,这样好管理!
这里写图片描述
编写Dao
UserDao接口
/** * UserDao接口,继承着UserDao * */ public interface UserDao extends BaseDao<User> { }
UserDaoImpl实现类
把UserDaoImple对象添加到IOC容器中管理
注意:因为我们在BaseDao中使用的是HibernateDaoSupport这个API,因此我们在UserDao中是需要在XML配置,注入SessionFactory的。
在总配置文件中是有专门注入SessionFactory的bean配置的
<!-- 所有业务dao的parent --> <bean id="baseDao" abstract="true"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>
/** * 继承着BaseDaoImpl实现类,就有了CRUD的方法 * 又实现了UserDao接口,那么UserDao接口就可以对User模块有相对应的补充 * * */ public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao { }
<bean id="userDaoImpl" class="zhongfucheng.user.dao.impl.UserDaoImpl" parent="baseDao"></bean> <context:component-scan base-package="zhongfucheng.user"/>
- 把user模块的spring配置文件添加到总配置文件中
<!--这是user模块的配置文件--> <import resource="classpath:zhongfucheng/user/config/user-bean.xml"/>
编写Service
Service接口
/** * Created by ozc on 2017/5/23. */ public interface UserService { //新增 public void save(User user); //更新 public void update(User user); //根据id删除O public void delete(Serializable id); //根据id查找 public User findObjectById(Serializable id); //查找列表 public List<User> findObjects(); }
UserServiceImpl
package zhongfucheng.user.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import zhongfucheng.user.dao.UserDao; import zhongfucheng.user.entity.User; import zhongfucheng.user.service.UserService; import java.io.Serializable; import java.util.List; /** * Created by ozc on 2017/5/23. */ @Service public class UserServiceImpl implements UserService { @Qualifier("userDaoImpl") @Autowired private UserDao userDaoImpl; @Override public void save(User user) { userDaoImpl.save(user); } @Override public void update(User user) { userDaoImpl.update(user); } @Override public void delete(Serializable id) { userDaoImpl.delete(id); } @Override public User findObjectById(Serializable id) { return userDaoImpl.findObjectById(id); } @Override public List<User> findObjects() { return userDaoImpl.findObjects(); } }
UserAction
UserAction应该根据增删改查应该有这么几个方法:
/** * 1.提供新增页面 * 2.确定新增用户方法 * 3.提供修改页面 * 4.确定修改用户方法 * 5.删除用户 * 6.批量删除用户 * 7.提供列表展示页面 * * */
package zhongfucheng.user.action; import com.opensymphony.xwork2.ActionSupport; /** * Created by ozc on 2017/5/23. */ /** * 1.提供新增页面 * 2.确定新增用户方法 * 3.提供修改页面 * 4.确定修改用户方法 * 5.删除用户 * 6.批量删除用户 * 7.提供列表展示页面 * * * */ public class UserAction extends ActionSupport { public String listUI() { return null; } public String addUI() { return null; } public String editUI() { return null; } public String edit() { return null; } public String delete() { return null; } public String add() { return null; } public String deleteSelect() { return null; } }