1.值的传递 - Map传值
可以通过对象获取Map传递值,在配置文件中通过 #{} 或 ${} 进行应用
查询30-40岁的用户
<!-- 值的传递 - Map传值 --> <select id="queryRange" resultType="cn.tedu.mybatis.beans.User"> select * from user where age between #{min} and #{max}; </select>
测试类
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * Map传值 */ @Test public void test02(){ // 1.通过map,准备参数 Map<String,Integer> map = new HashMap<String,Integer>(); map.put("min", 20); map.put("max", 40); // 2.创建sqlSession SqlSession session = factory.openSession(); // 3.执行操作 List<User> list = session.selectList("cn.tedu.mybatis.beans.UserMapper.queryRange",map); // 4.遍历结果 System.out.println(Arrays.toString(list.toArray())); }
2.值的传递 - 对象传值
可以通过对象获取Map传递至,在配置文件中通过#{} 和 ${} 进行应用
在UserMapper.xml中配置
<!-- 值的传递 - 对象传值 --> <select id="insertUser"> insert into user values (null,#{name},${age}) </select>
** 此处通过#{xxx}的语法来引用属性
测试类:
// 根据配置文件创建sqlSessionFactory private SqlSessionFactory factory = null; @Before public void before() throws Exception{ //1.读取MyBatis核心配置文件 InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.根据配置文件创建sqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); } /** * 对象传值 */ @Test public void test03(){ User user = new User(); user.setName("cjj"); user.setAge(24); // 1.创建sqlSession SqlSession session = factory.openSession(); // 2.执行操作 session.insert("cn.tedu.mybatis.beans.UserMapper.insertUser",user); // 3.提交事务,mybatis自动开启事务,但是并不会自动提交,需要手动提交事物 session.commit(); }
注意:mybatis自动开启事务,但是并不会自动提交,需要手动提交事物
3.值的传递 - 单值传值
如果程序中只有一个参数需要传递给sql,则不需要封装到bean或map中,可以直接传入。
在sql中可以使用任意名称获取到这个参数,虽然名称可以任意,但通常仍然使用该属性的名称,以便阅读。
<!-- 值的传递 - 单值传值 --> <select id="queryOne" resultType="cn.tedu.mybatis.beans.User"> select * from user where id = #{id} </select>
测试类:
/** * 单值传递 */ @Test public void test04(){ // 1.创建sqlSession SqlSession session = factory.openSession(); // 2.执行操作 User user = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryOne",3); // 3.遍历结果 System.out.println(user); }