Mybatis如何传入多个参数(实体类型和基本类型)

目录
  • Mybatis传入多个参数
    • 1.ProjectController类
    • 2.ProjectAndUserService接口
    • 3.ProjectAndUserServiceImpl实现类
    • 4.ProjectAndUserMapper接口
    • 5.ProjectAndUserMapper.xml
  • Mybatis传入多个参数时,如何处理
    • 方式一
    • 方式二
    • 方式三

Mybatis传入多个参数

1.ProjectController类

Integer oldUserId = getUserIdByUserName(oldUserName);
        
ProjectAndUser projectAndUser = new ProjectAndUser();
projectAndUser.setProjectId(project.getId());
projectAndUser.setUserId(newUserId);
projectAndUser.setAccessLevel(1);
projectAndUserService.update(projectAndUser, oldUserId);

2.ProjectAndUserService接口

public interface ProjectAndUserService extends BaseService<ProjectAndUser> {
    public boolean update(ProjectAndUser projectAndUser, Integer oldUserId);
}

3.ProjectAndUserServiceImpl实现类

@Service
public class ProjectAndUserServiceImpl extends BaseServiceImpl<ProjectAndUser> implements ProjectAndUserService {
    @Autowired
    ProjectAndUserMapper projectAndUserMapper;
    @Override
    protected BaseMapper<ProjectAndUser> getMapper() {
        return projectAndUserMapper;
    }
    public boolean update(ProjectAndUser projectAndUser, Integer oldUserId){
        return projectAndUserMapper.update(projectAndUser, oldUserId);
    }
}

4.ProjectAndUserMapper接口

通过使用@Param注解,实现传入多个参数

@Mapper
public interface ProjectAndUserMapper extends BaseMapper<ProjectAndUser> {
    public boolean update(@Param("projectAndUser") ProjectAndUser projectAndUser, @Param("oldUserId") Integer oldUserId);
}

5.ProjectAndUserMapper.xml

因为传入的参数包括实体类对象,因此使用实体类对象的属性时需要采用projectAndUser.projectId的形式

<?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.taobao.rigel.rap.mapper.ProjectAndUserMapper">
    <resultMap id="ProjectAndUserMap" type="com.taobao.rigel.rap.model.ProjectAndUser">
        <result column="project_id" property="projectId"/>
        <result column="user_id" property="userId"/>
        <result column="access_level" property="accessLevel"/>
    </resultMap>
    <update id="update">
        update tb_project_and_user_new set user_id=#{projectAndUser.userId} where project_id=#{projectAndUser.projectId} and user_id=#{oldUserId} and access_level=#{projectAndUser.accessLevel}
    </update>
</mapper>

Mybatis传入多个参数时,如何处理

方式一

通过使用索引方式,来指定想传入的参数,#{index}   索引从0开始。

DAO接口

Mybatis配置

注意:

1.由于是多参数传入,所以不需要对parameterType进行配置。

2.由于使用索引方式,所以在DAO接口中不需要使用@Param注解来注明参数名

方式二

通过MyBatis的注解(@Param("paramName"))方式来注明参数

DAO接口

MyBatis配置

注意:

1.同样由于是多参数传入,所以不需要对parameterType进行配置。

方式三

通过Map方式传递多个参数,map中的key的名字就是对应xml配置中#{}中使用的那个

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 基于MyBatis的parameterType传入参数类型

    目录 MyBatis的parameterType传入参数类型 1. MyBatis的传入参数parameterType类型分两种 2. 如何获取参数中的值 3.案例 mybatis 之parameterType="Long" MyBatis的parameterType传入参数类型 在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的输入参数

  • mybatis对传入基本类型参数的判断方式

    目录 对传入基本类型参数的判断 解决办法 传入基本类型参数时test判断报错 分析 解决办法 小结一下 对传入基本类型参数的判断 mybatis的xml文件的sql语句中parameterType为基本类型,如: <select id="getCustomer" parameterType="Integer" resultType="Customer">     select * from customer     where    

  • Mybatis 如何传入字符串参数,分割并遍历

    目录 如何传入字符串参数,分割并遍历 如前台传入字符串参数 正确写为如下 Mybatis 传入分割字符串做参数 解决 如何传入字符串参数,分割并遍历 如前台传入字符串参数 String str = "a,b,c,d,e,f": 现需将此参数作为查询语句的参数, Select * from news where id in (${id}) 使用该语句查询正常返回结果,但势必产生sql注入漏洞. 如修改为: Select * from news where id in (#{id}) 程序

  • 使用mybatis的interceptor修改执行sql以及传入参数方式

    目录 mybatis interceptor修改执行sql以及传入参数 总体思路 1.Interceptor 代码实现 2.AutoConfiguration代码实现 mybatis interceptor 处理查询参数及查询结果 拦截器:拦截update,query方法 添加xml配置 mybatis interceptor修改执行sql以及传入参数 项目中途遇到业务需求更改,在查询某张表时需要增加条件,由于涉及的sql语句多而且依赖其他服务的jar,逐个修改sql语句和接口太繁杂.项目使用m

  • mybatis-plus 查询传入参数Map,返回List<Map>方式

    目录 mybatis-plus 查询传入参数Map,返回List<Map> 1.mapper.xml 2.mapper.java 3.service 组装查询条件 mybatis-plus 基本使用 首先我们需要创建一个数据库表 然后创建一个Spring Boot项目 我们来演示几个基本的查询方法 再演示几个删除方法 再演示插入方法 mybatis-plus 查询传入参数Map,返回List<Map> 原因有时实体类属性不够用,又不想写自定义VO了,所以用map,这样直接返回前台用

  • mybatis框架order by作为参数传入时失效的解决

    mybatis order by作为参数传入失效 mxl中的语句如下 <select id="statToday" resultType="com.dahua.la.business.model.vo.StatSysResultVO"> select a, b, count(1) as total from table where a is not null and b is not null and operateTime >= #{startT

  • Mybatis如何传入多个参数(实体类型和基本类型)

    目录 Mybatis传入多个参数 1.ProjectController类 2.ProjectAndUserService接口 3.ProjectAndUserServiceImpl实现类 4.ProjectAndUserMapper接口 5.ProjectAndUserMapper.xml Mybatis传入多个参数时,如何处理 方式一 方式二 方式三 Mybatis传入多个参数 1.ProjectController类 Integer oldUserId = getUserIdByUserN

  • Mybatis如何传入多个参数的实现代码

    第一种方式:使用@Param注解方式 此种方式用法是我们在接口中写方法的参数时,在每个参数的前面加上一个@Param注解即可. 该注解有一个value属性,我们可以给加上注解的参数取个名字,在SQL语句中我们可以通过这个名字获取参数值. 由于传入了多个参数,所以映射文件的入参ParameterType不用写. 假如我们在接口的方法如下: //根据传入的用户名和主键id去修改用户名 int updateUserByManyParam(@Param("name")String userna

  • MyBatis中传入参数parameterType类型详解

    前言 Mybatis的Mapper文件中的select.insert.update.delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型.本文主要给大家介绍了关于MyBatis传入参数parameterType类型的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1. MyBatis的传入参数parameterType类型分两种 1. 1. 基本数据类型:int,string,long,Date; 1. 2. 复杂数据类

  • Mybatis动态传入order by问题

    目录 Mybatis动态传入order by Mybatis order by动态参数防注入 先提及一下Mybatis动态参数 order by 动态参数 解决Order by动态参数注入问题 总结 Mybatis动态传入order by 当Mybatis的mapper文件传入的order by 为动态参数说的时候发现排序无法生效: 像下面这样,在choose when中的order by后的参数是用预编译的方式,用的是#号,这样是可以防止sql注入的问题,但是在传入order by参数的时候无

  • java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    实例如下: import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; /** * 获取实体类型的属性名和类型 * @param model 为实体类 * @author kou 为传入参数 */ public class GetModelNameAndType { public

  • Mybatis中传递多个参数的4种方法总结

    前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. 下面给大家总结了以下几种多参数传递的方法. 方法1:顺序传参法 #{}里面的数字代表你传入参数的顺序. 这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错. 方法2:@Param注解传参法 #{}里面的名称对应的是注解 @Param括号里面修饰的名称. 这种方法在参数不多的情况还

  • mybatis动态sql之Map参数的讲解

    mybatis 动态sql之Map参数 Mapper文件: <mapper namespace="com.cn.shoje.oa.modules.logistics.dao.PurcDao"> <select id="findAll" parameterType="Map" resultType="Purchase"> select * from prod_purchase where 1=1 <

  • mybatis查询语句揭秘之参数解析

    一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sql里面的参数进行一个匹配,最后获取结果.对于mybatis通常传参(这里忽略掉Rowbounds和ResultHandler两种类型)有几种方式. 1.javabean类型参数 2.非javabean类型参数 注意,本文是基于mybatis3.5.0版本进行分析. 1.参数的存储 2.对sql语句中参数的赋值 下面将围绕

  • Mybatis通过数据库表自动生成实体类和xml映射文件

    环境:maven+idea. 1. 需要的jar包 基本的spring和mybatis依赖包就不说了,在pom文件的build->plugins节点下需要添加(两个依赖包也可以直接添加到pom的依赖里面去,这里是为了直接通过maven的插件来生成.如果不是使用maven,自行百度下): <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-mave

  • mybatis调用mysql存储过程(返回参数,单结果集,多结果集)

    目录 一.接收一个返回值 注意事项: 存储过程主要分成三类: 二.接收list结果集 三.返回多个结果集 四.第二种配置也可以 一.接收一个返回值 使用Map接收返回参数,output参数放在传入的param中 创建表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`

随机推荐