持久对象层
首先先放一个目录结构:
从目录结构应该看出来了,基本上就是user、goods、bills的增删改查,我也就只例举一个user管理的操作了,剩下的goods、bills照猫画虎就行了。
先在pojo文件夹下创建一个User类,然后写上类的属性和toString、get、set方法就行了。
public class Yzq_User {
private String userId;
private String username;
private String password;
private int role;
private String phone;
private String gender;
private int age;
private Date createtime;
private String address;
@Override
public String toString() {
return "Yzq_User [userId=" + userId + ", username=" + username
+ ", password=" + password + ", role=" + role + ", phone="
+ phone + ", gender=" + gender + ", age=" + age
+ ", createtime=" + createtime + ", address=" + address + "]";
}
public Yzq_User(String userId, String username, String password, int role,
String phone, String gender, int age, Date createtime,
String address) {
super();
this.userId = userId;
this.username = username;
this.password = password;
this.role = role;
this.phone = phone;
this.gender = gender;
this.age = age;
this.createtime = createtime;
this.address = address;
}
public Yzq_User() {
super();
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Web表现层
首先先看JSP页面。我们拿注册页面举例子,在表单中填写注册信息,点击注册按钮,实现注册效果,其实就是实现user的增加操作,学会这个,那么其他的删除、修改、查询都是一个思路,bills、goods同理。
<form id="useraddForm" name="useraddForm" class="register" action="${pageContext.request.contextPath }/addUser.html" method="post">
表单的input填写框这些就略过了,重点注意提交路径action,必填。
删除、修改、查询这些都要注意路径,删除某件商品,只需要在路径上绑定商品id就行了,像这样:
<a href="${pageContext.request.contextPath }/goUpGoods.html?goodsId=${goods.goodsId}">
接下来,按照目录结构去controller包下创建一个UserController类。
@Controller
public class Yzq_UserController {
@Autowired
private Yzq_UserService userService;
//添加user
@RequestMapping("/addUser.html")
public String addUser(Yzq_User user) throws Exception{
userService.addUser(user);
return "yzq_login";
}
}
- 注意@RequestMapping注解中填写的/addUser.html,这个就是上一步在JSP页面中填写的action,两者要一致,所以当时表单填写的action就是提交到这来了。
- return "yzq_login"就是跳转到登录页面,用户注册成功则跳转到登录页面。
- 注意@Controller、@Autowired这些注解别漏了。
- 这时,Yzq_UserService userService与userService.addUser(user)肯定是爆红的,因为我们还没有写UserService,等下一步写了就OK了。
业务逻辑层
按照目录结构去service包下创建一个UserService接口,注意是接口哦。
public interface Yzq_UserService {
//添加user
public void addUser(Yzq_User user) throws Exception;
}
然后接着在这个包下创建UserService的实现类UserServiceImpl来实现UserService接口。
@Service
public class Yzq_UserServiceImpl implements Yzq_UserService{
@Autowired
private Yzq_UserMapper userMapper;
//添加user
@Override
public void addUser(Yzq_User user) throws Exception {
// TODO Auto-generated method stub
userMapper.addUser(user);
}
}
- @Service、@Autowired这些注解别漏了。
- Yzq_UserMapper userMapper和userMapper.addUser(user)肯定是爆红的,原因和之前的一样。
数据访问层
按照目录结构去dao包下创建一个UserMapper接口,注意是接口哦。
public interface Yzq_UserMapper {
//添加user
public void addUser(Yzq_User user) throws Exception;
}
然后接着在这个包下创建UserMapper的映射文件UserMapper.xml。
<mapper namespace="com.kmushop.dao.user.Yzq_UserMapper">
<resultMap id="BaseResultMap" type="com.kmushop.pojo.Yzq_User">
<id column="user_id" property="userId" />
<result column="user_name" property="username" />
<result column="password" property="password" />
<result column="user_role" property="role" />
<result column="phone" property="phone" />
<result column="gender" property="gender" />
<result column="age" property="age" />
<result column="user_address" property="address" />
</resultMap>
<sql id="dataFields">
user_id, user_name, password, user_role, phone, gender, user_address
</sql>
<!--
添加user
-->
<insert id="addUser" parameterType="com.kmushop.pojo.Yzq_User">
insert into user(user_id, user_name, password, user_role, phone, gender, user_address)
values (#{userId}, #{username}, #{password}, '2', #{phone}, #{gender}, #{address})
</insert>
</mapper>
- column是数据库表中的字段,property是user类中的属性,这样就实现了数据库表中的字段与实体类中的属性映射。
- insert这段就是insert的sql语句,注意填写parameterType,values值记得加#。
现在一个增加user的功能就实现了,剩下的删除、修改、查询这些功能都是一个流程,pojo -> JSP -> Controller -> Service -> Mapper。
主要注意根据不同功能编写不同sql语句即可。