1.Mybatis动态sql是基于OGNL的表达式,可以使我们方便的在sql语句中实现某些逻辑。
2.使用if+where实现多条件查询
1〉dao层方法
//if动态sql查询 public ListfindByIf(User user);
2〉xml配置文件的sql语句
3〉测试方法
//if动态sql查询 @Test public void findByIf(){ SqlSession sqlSession = null; User user = new User(); user.setUserName("测"); //]user.setUserPassword(""); try { sqlSession = MyBatisUtil.createSqlSession(); Listlist = sqlSession.getMapper(IUserDao.class).findByIf(user); sqlSession.commit(); for (User user1 : list) { System.out.println("user-------->"+user1.getUserCode()+"\t" +user1.getUserName()); } } catch (Exception e) { e.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } }
3.choose,相当于java中的switch,通常与otherwise搭配
1〉dao层方法
//智能标签choose查询 public ListfindByChoose(User user);
2〉xml配置文件中的sql语句
3〉测试方法
//choose动态sql查询 @Test public void findByChoose(){ SqlSession sqlSession = null; User user = new User(); user.setUserName("测"); //]user.setUserPassword(""); try { sqlSession = MyBatisUtil.createSqlSession(); Listlist = sqlSession.getMapper(IUserDao.class).findByChoose(user); sqlSession.commit(); for (User user1 : list) { System.out.println("user-------->"+user1.getUserCode()+"\t" +user1.getUserName()); } } catch (Exception e) { e.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } }
4. (1)foreach:迭代一个集合,通常用于in条件------------->传入数组 array
1〉dao层方法
//智能标签foreach查询 String [] array public ListfindByForeach(String [] depIds);
2〉xml配置文件的sql语句
3〉测试方法
//foreach动态sql查询 array @Test public void findByForeach(){ SqlSession sqlSession = null; String [] depIds = {"1","2"}; try { sqlSession = MyBatisUtil.createSqlSession(); Listlist = sqlSession.getMapper(IUserDao.class).findByForeach(depIds); sqlSession.commit(); for (User user1 : list) { System.out.println("user-------->"+user1.getUserCode()+"\t" +user1.getUserName()); } } catch (Exception e) { e.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } }
(2)foreach传入集合----------->list
1〉dao方法
//智能标签foreach查询 Listlist public List findByForeachList(List list);
2〉xml文件的配置
3〉测试方法
//foreach动态sql查询 list @Test public void findByForeachList(){ SqlSession sqlSession = null; Listlist = new ArrayList (); list.add(1); try { sqlSession = MyBatisUtil.createSqlSession(); List list1 = sqlSession.getMapper(IUserDao.class).findByForeachList(list); sqlSession.commit(); for (User user3 : list1) { System.out.println("user-------->"+user3.getUserCode()+"\t" +user3.getUserName()); } } catch (Exception e) { e.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } }