MyBatis学习(3)—— MyBatis获取参数值

MyBatis获取参数值的两种方式:${ } 和 #{ }

${ }:本质上是字符串拼接;#{ }:本质上是占位符赋值

一.  传入一个参数

①使用#{ }获取参数值:select * from user where username=#{username} 

②使用${ }获取参数值:select * from user where username='${username}'  需要加上单引号

当Mapper接口只传入一个参数时,可以通过#{ }和${ }以任意的名称获取参数值。

{ }中的内容可以设置为任意值,尽量与传入的参数名同名

package mapper;

import pojo.User;

public interface UserMapper {

    User queryUserByName(String username);   //根据用户名查询用户信息
}
<?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="mapper.UserMapper">  <!--为mapper接口的全类名-->

    <select id="queryUserByName" resultType="User">
        select * from user where username=#{username}   <!--#{}中的值可以任意设置,尽量与传入的参数名同名-->
        <!-- select * from user where username='${username}'-->
    </select>

</mapper>
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.SqlSessionUtils;

public class MybatisTest {
    @Test
    public void testQueryByName() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //调用方法操作数据库
        User user = mapper.queryUserByName("张三");

        System.out.println(user);
    }
}

二.  传入多个参数

(1)方式1:使用MyBatis自带的方式: 

①使用#{ }获取参数值:select * from user where username=#{arg0} and password=#{arg1}

                                      select * from user where username=#{param1} and password=#{param2}

②使用${ }获取参数值:select * from user where username='${arg0}' and password='${arg1}'

                                     select * from user where username='${param1}' and password='${param2}'                                      

 当Mapper接口传入多个参数时,MyBatis会将这些参数放在一个map集合中,以两种方式进行存储:(1)以arg0,arg1...为键,以参数为值;(2)以param1,param2...为键,以参数为值;

{ }中的内容只能为arg0, arg1, arg2, ...... 或者param1, param2, param3, ......

package mapper;

import pojo.User;

public interface UserMapper {

    User queryUserByNameAndPassword(String username, String password);   //根据用户名和密码查询用户信息
}
<?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="mapper.UserMapper">  <!--为mapper接口的全类名-->

    <select id="queryUserByNameAndPassword" resultType="User">
        <!--多个参数时,#{}中的值不可以任意设置,只能为arg0,arg1,arg2,...或param1,param2,param3,...-->
        select * from user where username=#{arg0} and password=#{arg1}
        <!-- select * from user where username=#{param1} and password=#{param2}-->
    </select>

</mapper>
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.SqlSessionUtils;

public class MybatisTest {

    @Test
    public void testQueryByNameAndPassword() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //调用方法操作数据库
        User user = mapper.queryUserByNameAndPassword("张三","1234");

        System.out.println(user);
    }
}

(2)方式2:采用自定义的方式 

可以对上述进行修改,我们可以手动将参数放在map中存储

package mapper;

import pojo.User;

import java.util.Map;

public interface UserMapper {

    User queryUserByMap(Map<String, Object> map);
}
<?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="mapper.UserMapper">  <!--为mapper接口的全类名-->

    <select id="queryUserByMap" resultType="User">
        select * from user where username=#{username} and password=#{password}
    </select>

</mapper>
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.SqlSessionUtils;

import java.util.HashMap;
import java.util.Map;

public class MybatisTest {

    @Test
    public void testQueryByMap() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String,Object> map = new HashMap<>();
        map.put("username","张三");
        map.put("password","1234");

        //调用方法操作数据库
        User user = mapper.queryUserByMap(map);

        System.out.println(user);
    }
}

(3)采用@Param注解的方式

package mapper;

import org.apache.ibatis.annotations.Param;
import pojo.User;

public interface UserMapper {

    User queryUserByNameAndPassword(@Param("username") String username, @Param("password") String password);   //根据用户名和密码查询用户信息
}
<?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="mapper.UserMapper">  <!--为mapper接口的全类名-->

    <select id="queryUserByNameAndPassword" resultType="User">
        <!-- 使用@Param注解内的值-->
        select * from user where username=#{username} and password=#{password}
    </select>

</mapper>
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.SqlSessionUtils;

public class MybatisTest {

    @Test
    public void testQueryByNameAndPassword() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //调用方法操作数据库
        User user = mapper.queryUserByNameAndPassword("张三","1234");

        System.out.println(user);
    }

}

三. 参数为JavaBean

通过#{ }和${ }以属性的方式获取属性值

package mapper;

import pojo.User;

public interface UserMapper {

    void insertUser(User user);   //添加用户信息
}
<?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="mapper.UserMapper">  <!--为mapper接口的全类名-->

    <insert id="insertUser">
        insert into user values(null,#{username},#{password},#{age},#{sex},#{email})
    </insert>

</mapper>
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.User;
import utils.SqlSessionUtils;

public class MybatisTest {
    @Test
    public void testInsert() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        //获取Mapper接口对应的对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //操作数据库
        mapper.insertUser(new User(null,"李梅","3456",20,'女',"Limei@qq.com"));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值