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.tedu.mapper.UserMapper">
<select id="selc01" resultType="cn.tedu.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.tedu.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.tedu.mapper.UserMapper.inset01",user);
session.commit();
}
測試結果
數據插入成功
4.值的傳遞 - 單值傳
如果程序中只有一個參數需要傳遞給sql,則不需要封裝到bean或map中,可以直接傳 入。在sql中可以使用任意名稱獲取到這個參數,雖然名稱可以任意,但通常仍然使用該 屬性的名稱,以便於閱讀。
(如果只傳遞一個值,用map或者bean 那麼比較浪費,如果在沒有歧義(有歧義的情況,換成Map就行)等問題的情況下采用單值傳遞,單值傳遞--mybatis將傳遞的字符串參數當做一個bean傳遞)
<select id="selc02" resultType="cn.tedu.domain.User">
select * from user where id = #{id};
</select>
測試類;
@Test
public void test03(){
//3.執行sql
User user = session.selectOne("cn.tedu.mapper.UserMapper.selc02",2);
System.out.println(user);
}
測試結果如下