2021-08-06 mybatis入参处理

Mybatis多参数处理:

1、封装POJO类

Persom.java

package com.example.bean;

import lombok.Data;

@Data
public class Person {

    private Integer id ;
    private String username;
    private String email;
    private String gender;
    private String dept_id;

    public Person(String username ,String gender){
        this.gender = gender;
        this.username = username;

    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                ", dept_id='" + dept_id + '\'' +
                '}';
    }
}

PersonMapper.java
    
package com.example.dao;

import com.example.bean.Person;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface PersonMapper {
    /**
     * 多参数:封装POJO类的方式,传入person类的对象
     * @param Person
     * @return Person
     */
    Person getPersonByNameAndGender(Person person);

}


PersonMapper.java
    
<?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.example.dao.PersonMapper">
    <resultMap id="BaseResultMap" type="com.example.bean.Person">
        <result column="id" jdbcType="INTEGER" property="id" />
        <result column="userName" jdbcType="VARCHAR" property="userName" />
        <result column="email" jdbcType="VARCHAR" property="email" />
        <result column="gender" jdbcType="VARCHAR" property="gender" />
        <result column="dept_id" jdbcType="VARCHAR" property="dept_id"/>
    </resultMap>
  <!--where条件重传入属性值username 和 gender-->
    <select id="getPersonByNameAndGender" resultType="person">
        select * from person where username = #{username} and gender = #{gender}
    </select>

</mapper>
Test.java

package com.example.imoocdemo1;

import com.example.bean.Person;
import com.example.dao.PersonMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class Test {
    @Autowired
    PersonMapper personMapper;

    @Test
    void testQuery(){
        //传入一个person的实例,实例中指定了mapper.xml中的属性
        Person person = personMapper.getPersonByNameAndGender(new Person("zhangyn","F"));
        System.out.println(person);
    }


}

2、多参数处理-Map

如果参数比较少,而且没有对应的JavaBean,可以封装城Map

xml文件中: #{key}取出map中对应的值

//Person.java如上
PersonMapper.java
    
package com.example.dao;

import com.example.bean.Person;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface PersonMapper {
    /**
     * 传入map对象param
     * @param param
     * @return Person
     */
    Person getPersonByNameAndGender(Map<String,Object>() param);

}

PersonMapper.java
    
<!--where条件重传入map的key name 和 gender-->
    <select id="getPersonByNameAndGender" resultType="person">
      <!--where条件重传入map的key 【name 和 gender】-->
        select * from person where username = #{name} and gender = #{gender}
    </select>
Test.java

package com.example.imoocdemo1;

import com.example.bean.Person;
import com.example.dao.PersonMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class Test {
    @Autowired
    PersonMapper personMapper;

    @Test
    void testQuery(){
        //新建map
        Map<String,Object>() param = new HashMap<String,Object>();
        //Key:name
        //注意这里指定key为name不是username,mapper.xml中要对应!!!
        param.put("name","zhangyn");
        //Key:gender
        param.put("gender",'F');
        
        Person person = personMapper.getPersonByNameAndGender(new Person(param));
        System.out.println(person);
    }


}

3、多参数处理-@param

以上两种方式需要手动创建map和对象,不简洁;可以使用@param注释,明确指定封装参数的map和key

void updateUserById(@Param("id") Integer id,@Param("name") String username);

<update id="updateUserById" >
    update user set username = #{name}
    where id = #{id}
</update>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值