action层
package com.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.po.Page;
import com.po.User;
import com.service.IUserService;
@Controller
@Scope("prototype")
public class UserAction implements ModelDriven<User>, ServletRequestAware,
ServletResponseAware {
@Autowired
private IUserService userService;
// 使用模型驱动自动获取前台页面的值
private User user;
@Override
public User getModel() {
if(user==null){
user=new User();
}
return user;
}
// 获取request和response对象
private HttpServletRequest request;
private HttpServletResponse response;
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
}
public String add() {
userService.add(user);
return "add";
}
public String delete() {
userService.delete(user);
return "delete";
}
//修改完成之后,进入查询所有action,显示最新数据
public String update() {
userService.update(user);
return "update";
}
//根据id查询对象
public String findById() {
User user2=userService.findById(user);
ActionContext.getContext().getValueStack().push(user2);
return "findById";
}
//多条件模糊查询
public String findByUser() {
//前台传递的id属性值,会自动被模型驱动获取,所以直接使用user作为查询条件
List<User> ulist = userService.findByUser(user);
request.setAttribute("user", user);
request.setAttribute("ulist", ulist);
return "findByUser";
}
//查询所有用户
public String findAll() {
List<User> ulist = userService.findAll();
request.setAttribute("ulist", ulist);
return "findAll";
}
//分页查询
public String findByPage() {
//分页查询需要提供三个参数:当前页,每页显示的行数,总行数
Page page=new Page();
page.setSize(3);
Integer count=userService.findCount();
page.setCount(count);
//第一次进入,没有当前页,需要手动提供
String nowPage = request.getParameter("nowPage");
if(StringUtils.isBlank(nowPage)){
//如果从页面中获取的nowPage是空,说明是第一次进入,手动设置为1
nowPage="1";
}
page.setNowPage(Integer.parseInt(nowPage));
List<User> ulist = userService.findByPage(page);
request.setAttribute("ulist", ulist);
request.setAttribute("page", page);
return "findByPage";
}
//多条件分页查询
public String findByPU() {
//分页查询需要提供三个参数:当前页,每页显示的行数,总行数
Page page=new Page();
page.setSize(3);
//查询符合条件的所有数据
Integer count=userService.findCountByPU(user);
page.setCount(count);
//第一次进入,没有当前页,需要手动提供
String nowPage = request.getParameter("nowPage");
if(StringUtils.isBlank(nowPage)){
//如果从页面中获取的nowPage是空,说明是第一次进入,手动设置为1
nowPage="1";
}
page.setNowPage(Integer.parseInt(nowPage));
List<User> ulist = userService.findByPU(page, user);
request.setAttribute("ulist", ulist);
request.setAttribute("page", page);
request.setAttribute("user", user);
return "findByPU";
}
}
dao层
package com.dao;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.po.Page;
import com.po.User;
/**
* mybatis可以自动创建dao的实现类,不需要手动创建
* 但是注意:mapper文件中namespace要和接口全类名一致,方法名称,参数和返回值要一致
* @author wesley
*
*/
@Repository
public interface IUserDao {
void addUser(User user);
void delUser(User user);
void upUser(User user);
List<User> findAll();
List<User> findById(User user);
List<User> findByUser(User user);
List<User> findByPage(Page page);
List<User> findByPU(Map<String,Object> map);
Integer findCount();
Integer findCountByPU(User user);
}
usermapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空间,习惯上使用包名+映射文件名称,保证唯一 -->
<mapper namespace="com.dao.IUserDao">
<!-- 增加 -->
<insert id="addUser" parameterType="User">
insert into User(name,pass)
values(#{name},#{pass})
</insert>
<!-- 修改 -->
<update id="upUser" parameterType="User">
update user set
name=#{name},pass=#{pass} where id=#{id}
</update>
<!-- 删除 -->
<delete id="delUser" parameterType="User">
delete from user where
id=#{id}
</delete>
<!-- 根据id查询 -->
<select id="findById" parameterType="User" resultType="User">
select *
from User where id=#{id}
</select>
<!-- 查询所有 -->
<select id="findAll" resultType="User">
select * from User
</select>
<!-- 多条件模糊查询 -->
<select id="findByUser" parameterType="User" resultType="User">
select * from User where 1=1
<if test="id!=null and id!=''">
and id=#{id}
</if>
<if test="name!=null and name!=''">
and name like '%${name}%'
</if>
<if test="pass!=null and pass!=''">
and pass like '%${pass}%'
</if>
</select>
<!-- 分页查询 -->
<select id="findByPage" resultType="User" parameterType="Page">
select *
from User limit #{index},#{size}
</select>
<!-- 多条件分页查询 :mabatis的不支持多个参数,如果有多个参数,需要使用map传递 -->
<select id="findByPU" resultType="User" parameterType="Map">
select * from User where 1=1
<if test="user.id!=null and user.id!=''">
and id=#{user.id}
</if>
<if test="user.name!=null and user.name!=''">
and name like '%${user.name}%'
</if>
<if test="user.pass!=null and user.pass!=''">
and pass like '%${user.pass}%'
</if>
limit #{page.index},#{page.size}
</select>
<!-- 查询所有 数量 -->
<select id="findCount" resultType="int">
select count(*) from User
</select>
<!-- 多条件分页查询需要使用的数量 -->
<select id="findCountByPU" resultType="int" parameterType="User">
select count(*) from User where 1=1
<if test="id!=null and id!=''">
and id=#{id}
</if>
<if test="name!=null and name!=''">
and name like '%${name}%'
</if>
<if test="pass!=null and pass!=''">
and pass like '%${pass}%'
</if>
</select>
</mapper>
serivace层
package com.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dao.IUserDao;
import com.po.Page;
import com.po.User;
import com.service.IUserService;
@Service
public class UserServiceImpl implements IUserService{
@Autowired
private IUserDao userDao;
@Override
public void add(User user) {
userDao.addUser(user);
}
@Override
public void delete(User user) {
userDao.delUser(user);
}
@Override
public void update(User user) {
userDao.upUser(user);
}
@Override
public List<User> findAll() {
// TODO Auto-generated method stub
return userDao.findAll();
}
@Override
public List<User> findByUser(User user) {
// TODO Auto-generated method stub
return userDao.findByUser(user);
}
@Override
public User findById(User user) {
// TODO Auto-generated method stub
return userDao.findById(user).get(0);
}
@Override
public List<User> findByPage(Page page) {
// TODO Auto-generated method stub
return userDao.findByPage(page);
}
@Override
public Integer findCount() {
// TODO Auto-generated method stub
return userDao.findCount();
}
@Override
public List<User> findByPU(Page page, User user) {
// TODO Auto-generated method stub
Map<String, Object> map=new HashMap<String, Object>();
map.put("user", user);
map.put("page", page);
return userDao.findByPU(map);
}
@Override
public Integer findCountByPU(User user) {
// TODO Auto-generated method stub
if(user==null){
user=new User();
}
return userDao.findCountByPU(user);
}
}