能夠經過對象獲取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); }