复习以前的mybatis文章之后,有一些新的心得。
一、代码实现
(1)返回list,输出为json
用于多返回值的情况。
userMapper.xml:
1 2 3 4 |
<select id="testreturnlist" parameterType="java.lang.String" resultType="com.xie.pojo.user"> select * from USERS where PASSWORD = #{password} </select> |
userMapper.java:
1 |
List<user> testreturnlist(String password); |
userservice.java:
1 |
List<user> testreturnlist(String password); |
userserviceimpl.java:
1 2 3 4 |
@Override public List<user> testreturnlist(String password) { return userMapper.testreturnlist(password); } |
test.java
1 2 3 4 5 6 7 8 9 10 |
@ResponseBody @RequestMapping(value = "/testreturnlist", method = RequestMethod.GET) public List<user> testreturnlist(String password) { if (password != null) { System.out.println(password); List<user> list = userservice.testreturnlist(password); return list; } return null; } |
输出效果为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
[ { "id": "yxin", "account": "123", "name": null, "type": null, "password": "123456", "sfzh": null, "sex": null, "headIcon": null, "address": null, "bmid": null, "phone": null, "qq": null, "email": null, "privacyConfig": null, "status": null }, { "id": "xie", "account": "123", "name": null, "type": null, "password": "123456", "sfzh": null, "sex": null, "headIcon": null, "address": null, "bmid": null, "phone": null, "qq": null, "email": null, "privacyConfig": null, "status": null } ] |
可以看到输出的数据为json形式,但是数组本身并没有key。
(2)返回map,输出为json
同样用于多返回值的情况。
我尝试了一种写法,寄希望于mybatis能将返回结果映射成List<Map<String, user>>的形式,但是mybatis是拒绝的,这样写不能指定String的Key值。
所以只能想办法把list转换成map。
其余的代码都和(1)是一样的,就是输出的时候需要做些处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@ResponseBody @RequestMapping(value = "/testreturnmap", method = RequestMethod.GET) public Map<String, user> testreturnmap(String password) { if (password != null) { System.out.println(password); List<user> list = userservice.testreturnlist(password); Map<String, user> map = new HashMap<String, user>(); for (user user : list) { map.put(user.getId(), user); } return map; } return null; } |
输出效果为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
{ "xie": { "id": "xie", "account": "123", "name": null, "type": null, "password": "123456", "sfzh": null, "sex": null, "headIcon": null, "address": null, "bmid": null, "phone": null, "qq": null, "email": null, "privacyConfig": null, "status": null }, "yxin": { "id": "yxin", "account": "123", "name": null, "type": null, "password": "123456", "sfzh": null, "sex": null, "headIcon": null, "address": null, "bmid": null, "phone": null, "qq": null, "email": null, "privacyConfig": null, "status": null } } |
可以看到输出的数据为json形式,可以通过解析json的key来获取相应的数组对象。
但也不是说这样就一定比list那种方式优秀,还是要具体业务具体分析。
二、总结
jackson确实挺好用的。返回json特别方便,不需要想尽办法自己去解析。