三大框架整合struts+spring+mybatis

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);
    }

    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值