1.前言
本案例中,所用的的数据表,bean,Mybatis数据库配置,可以参考:https://blog.csdn.net/qq_32224047/article/details/107165157
2.值的传递 - Map传值
可以通过对象 获取 Map传递值,在配置文件中通过 #{} 或 ${}进行应用
userMapper.xml中的配置
<?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="cn.wyy.mapper.UserMapper">
<select id="selc01" resultType="cn.wyy.domain.User">
select * from user where age between #{min} and #{max};
</select>
</mapper>
测试类
@Test
public void test01() throws Exception {
//3.执行sql
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("min",20);
map.put("max",30);
List<User> list = session.selectList("cn.wyy.mapper.UserMapper.selc01",map);
System.out.println(list);
}
测试结果:
3. 值的传递 - 对象传值
可以通过对象 获取 Map传递值,在配置文件中通过 #{} 或 ${}进行应用
在UserMapper.xml中配置:
<insert id="inset01">
insert into user values (#{id},#{name},#{age});
</insert>
测试类 ,事务未设置自动提交,所以需要手动提交
@Test
public void test02(){
User user = new User(9,"xx",99);
//3.执行sql
session.insert("cn.wyy.mapper.UserMapper.inset01",user);
session.commit();
}
测试结果
数据插入成功
4.值的传递 - 单值传
如果程序中只有一个参数需要传递给sql,则不需要封装到bean或map中,可以直接传 入。在sql中可以使用任意名称获取到这个参数,虽然名称可以任意,但通常仍然使用该 属性的名称,以便于阅读。
(如果只传递一个值,用map或者bean 那么比较浪费,如果在没有歧义(有歧义的情况,换成Map就行)等问题的情况下采用单值传递,单值传递--mybatis将传递的字符串参数当做一个bean传递)
<select id="selc02" resultType="cn.wyy.domain.User">
select * from user where id = #{id};
</select>
测试类;
@Test
public void test03(){
//3.执行sql
User user = session.selectOne("cn.wyy.mapper.UserMapper.selc02",2);
System.out.println(user);
}
测试结果如下