使用Map代替实体类,实现ssm框架下的增删改查

来源:互联网 发布:五毛钱特效软件 编辑:程序博客网 时间:2024/05/20 10:10

之前搭得SSM框架包括后来的使用json的都是使用实体类的,这次尝试用Map代替实体类来返回数据,经过替换后,现在的包结构成了这样,是不是更加清晰了,同时完善了mybatis的增删改查方法,不过对于动态sql目前感觉看一眼就会,就没写,整个项目的地址在文章末尾,需要的可以下载。
项目包结构

接下来看下代码

UserMapper.xml

这个文件原本我是直接用之前的mybatis-generator生成的,原来它是用ResultMap来作为返回值的,我直接将里面的值改为hashMap,很遗憾,报错了,改成ResultType就可以,后来查了资料发现

1、esultType是直接表示返回类型的(对应着我们的model对象中的实体)。
2、resultMap是对外部ResultMap的引用(提前定义了db和model之间的隐射key value关系)。
3、resultType跟resultMap不能同时存在。

<?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" ><mapper namespace="com.tu.dao.UserDao">    <!-- 查询所有 -->    <select id="getAll" resultType="hashmap">        select * from user    </select>    <!-- 根据主键查询 -->    <select id="selectByPrimaryKey" resultType="java.util.HashMap" parameterType="java.lang.Integer">        select * from user where id = #{id}    </select>    <!-- 插入 -->    <insert id="addUser" parameterType="java.util.HashMap">        <!-- 返回主键 -->        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">            select LAST_INSERT_ID() as id        </selectKey>        insert into user (name,password,age,male) value(#{name},#{password},#{age},#{male})    </insert>    <!-- 删除 -->    <delete id="delete" parameterType="java.util.HashMap">        delete from user where id=#{id}    </delete>    <!-- 修改 -->    <update id="update" parameterType="java.util.HashMap">        update user set name=#{name} where id=#{id}    </update></mapper>

UserController

public class UserController {    @Resource    private UserService userService;    @RequestMapping("/home")    private ModelAndView init(HttpServletRequest request){        ModelAndView mv = new ModelAndView();        List<Map<String,Object>> user = userService.getAll();        mv.addObject("user",user);        mv.setViewName("index");        return mv;    }    @RequestMapping("/index/load")    private @ResponseBody List<Map<String,Object>> requestJson(@RequestBody Map<String, Object> map){        List<Map<String,Object>> list = userService.getAll();        return list;    }    @RequestMapping("/register")    private @ResponseBody Map<String,Object> register(@RequestBody Map<String, Object> map){        return userService.addUser(map);    }    @RequestMapping("/deleteuser")    private @ResponseBody Map<String,Object> delete(@RequestBody Map<String, Object> map){        int num = userService.delete(map);        Map<String, Object> state = new HashMap<String, Object>();        state.put("result", num);        return state;    }    @RequestMapping("/update")    private @ResponseBody Map<String,Object> update(@RequestBody Map<String, Object> map){        int num = userService.update(map);        Map<String, Object> state = new HashMap<String, Object>();        state.put("result", num);        return state;    }

其他代码比较简单,我这边就不贴了,如果有需要,可以点击这里下载
页面中的修改,采用的是原来的html代码,输入姓名和id,就可以根据id来修改姓名。