mybatis使用map做入参

测试例子:

controlelr层

 1 package org.slsale.test;
 2
 3 import java.util.HashMap;
 4 import java.util.List;
 5 import java.util.Map;
 6
 7 import net.sf.json.JSONArray;
 8
 9 import org.slsale.pojo.User;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.stereotype.Controller;
12 import org.springframework.web.bind.annotation.RequestMapping;
13 import org.springframework.web.bind.annotation.ResponseBody;
14
15 @Controller
16 @RequestMapping("/test")
17 public class TestController {
18
19     @Autowired
20     private TestService service;
21
22     @RequestMapping(value="/getUsers",produces = { "text/html;charset=UTF-8" }) //返回页面的数据中有中文,用produces 处理乱码
23     @ResponseBody
24     public String getUsers(){
25         Map<String, Object> params = new HashMap<String, Object>();
26         params.put("isStart", 1);
27         params.put("userType", "1");
28         params.put("startNum", 0);
29         params.put("pageSize", 5);
30         List<User> users = service.getUsers(params);
31         JSONArray jsonArray = JSONArray.fromObject(users);
32         return jsonArray.toString();
33     }
34
35 }

2.service层

 1 package org.slsale.test;
 2
 3 import java.util.List;
 4 import java.util.Map;
 5
 6 import org.slsale.dao.testmapper.TestUserMapper;
 7 import org.slsale.pojo.User;
 8 import org.springframework.beans.factory.annotation.Autowired;
 9 import org.springframework.stereotype.Service;
10
11 @Service
12 public class TestService {
13
14     @Autowired
15     private TestUserMapper mapper ;
16
17     public List<User> getUsers(Map<String, Object> params){
18         return mapper.getUserList1(params);
19     }
20
21 }

3.dao层,返回list

 1 package org.slsale.dao.testmapper;
 2
 3 import java.util.List;
 4 import java.util.Map;
 5
 6 import org.slsale.pojo.User;
 7
 8 public interface TestUserMapper {
 9
10     public List<User> getUserList1(Map<String, Object> map);
11
12 }

sql映射mapper xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4
 5 <mapper namespace="org.slsale.dao.testmapper.TestUserMapper">
 6
 7     <!-- getUserList1 根据条件查询分页用户列表,联表查询,表名使用了别名,需要使用ResultMap进行字段映射而不再是 resultType="user"-->
 8     <select id="getUserList1" resultMap="userResultMap" parameterType="Map">
 9         select u.userName ,u.loginCode ,r.roleName
10         from au_user u
11         left join au_role r on r.id=u.roleId
12         <where>
13             <if test="userName!=null"> and u.userName like  CONCAT(‘%‘, #{userName},‘%‘)</if>   <!-- -->
14             <if test="isStart!=null">and u.isStart=#{isStart}</if>
15             <if test="userType!=null">and u.userType=#{userType}</if>
16         </where>
17         order by createTime desc limit #{startNum},#{pageSize}
18     </select>
19
20     <resultMap id="userResultMap" type="user">
21         <id property="id" column="u.id" />
22         <result property="userName" column="u.userName" />
23         <result property="loginCode" column="u.loginCode" />
24         <result property="roleName" column="r.roleName" />
25     </resultMap>
26
27 </mapper>

联表查询,如果表名使用了别名,接收结果集必须 使用resultmap,resultmap中的column 是sql语句中的查询字段。sql中的参数就是controller中定义的key

原文地址:https://www.cnblogs.com/enjoyjava/p/9250429.html

时间: 2024-10-14 21:41:43

mybatis使用map做入参的相关文章

C语言函数参数既做出参又做入参的代表

//使用fcntl对文件进行加锁 #include "stdio.h"#include "unistd.h"#include "fcntl.h" int main(){    int fd;    struct flock lk;    int r;    fd=open("a.txt", O_RDWR);    if (fd==-1)    {        fd=open("a.txt", O_RDWR

mybatis中mapper传多个入参

有三种方式 1.使用占位符#{0},#{1}....对应顺序就是参数的顺序 #方法签名 List<TbItem> selectByPage(int page, int rows); #sql语句 <select id="selectByPage" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List" /> from tb_item

Jmeter请求响应后的数据截取特定数据并修改特定参数再下一请求中作为入参使用

1.查询用户信息,出参中包含用户id 使用jsonPath提取出用户id 2.获取任务详情,出参信息列表list要在第三步任务处理中做入参使用,但是要要修改list中的数据(如上一步提取的id) 使用beanShell PostProcessor提取获取任务详情参数并修改其中的值 3.处理任务 处理任务的入参为第二步修改后的出参,即"var_data_obj",直接在地散步引用即可: 原文地址:https://www.cnblogs.com/cjy-blog/p/10293718.ht

mybatis框架之多参数入参--传入Map集合

需求:查询出指定性别和用户角色列表下的用户列表信息 实际上:mybatis在入参的时候,都是将参数封装成为map集合进行入参的,不管你是单参数入参,还是多参数入参,都是可以封装成map集合的,这是无可非议的. /** * 需求:查询出指定性别和用户角色列表下的用户列表信息 * @param roleids * @return */ public List<User> getUserListByGender_UserRoleids(Map<String,Object> conditi

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提

mybatis入参方式和缓冲

1.mybatis入参方式 @Param注解参数(注解) 封装成对象入参 public int updatePassword(@Param("id")int id,@Param("pwd")String newpwd); 注意:一般情况下:参数超过3个,就用对象. 2.MyBatis缓存 1).分类 一级缓存:SqlSession级别的缓存.(在同一个SqlSession中,缓存有效,默认打开) 二级缓存:应用级别缓存(全局缓存,随便在哪里都能取得到.默认是关闭的)

springMVC中 request请求数据绑定到Controller入参 过程剖析

前言:Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数.众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端.而服务端通过Request的getParameter方法取到的参数也都是字符串形式的结果.所以,需要有一个把字符串形式的参数转换成服务端真正需要的类型的转换工具(基类:PropertyEditorSupport) 注:只有

Swagger入参为List

今天遇到一个奇葩的需求,为了方便,service的一个接口入参是List<Map> repayMoney(List<Map<String,Object>) 那,我为了在controller调用service,入参类型得一致呀, 那么问题来了,controller入参也得是List吧,或者是其他形式的数据,转换为List<Map> 翻遍了整个项目,没看到之前有人swagger的controller里入参是List的,而且查了一下, 用@ApiImplicitPara

利用过滤器和反射技术对string类型的入参进行统一trim

背景 最近做的一些项目都是后台管理系统,主要是对表单数据的增删改查操作,其中有些表单项是字符串类型的,对于这些类型的表单项就需要在保存或编辑之前要进行.trim()处理,刚开始感觉没什么,遇到了就手动进行.trim()一下,感觉很正常,因为Java本身就提供了这么一个字符串处理的方法,感觉每次都这么做也不能嫌麻烦,理所应当.但是是随着业务的发展,需要这么处理的地方越来越多,虽然每次都小心谨慎,但难免会有遗漏,导致不该出现问题的地方出现了问题,对于这些不该出现的低级错误感到痛心.于是想,能不能写一