能够经过对象获取Map传递值,在配置文件中经过 #{} 或 ${} 进行应用sql
查询30-40岁的用户session
<!-- 值的传递 - Map传值 --> <select id="queryRange" resultType="cn.tedu.mybatis.beans.User"> select * from user where age between #{min} and #{max}; </select>
测试类mybatis
// 根据配置文件建立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())); }
能够经过对象获取Map传递至,在配置文件中经过#{} 和 ${} 进行应用app
在UserMapper.xml中配置测试
<!-- 值的传递 - 对象传值 --> <select id="insertUser"> insert into user values (null,#{name},${age}) </select>
** 此处经过#{xxx}的语法来引用属性ui
测试类:spa
// 根据配置文件建立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自动开启事务,可是并不会自动提交,须要手动提交事物code
若是程序中只有一个参数须要传递给sql,则不须要封装到bean或map中,能够直接传入。xml
在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); }