======================== MyBatis动态SQL之项目准备 ======================== 1 DAO public interface MemberDao { public int add(Member member); } 2 映射 ... insert into t_member(nick, gender, age, city) values(#{nick}, #{gender}, #{age}, #{city}) ... 3 测试 public class MemberDaoTest { ... @Test public void testAdd() { MemberDao dao = MyBatisUtil.getMapper(MemberDao.class); assertEquals(1, dao.add(new Member(0, "john", "男", 20, "北京"))); assertEquals(1, dao.add(new Member(0, "thomas", "男", 35, "上海"))); assertEquals(1, dao.add(new Member(0, "luck", "男", 40, "广州"))); assertEquals(1, dao.add(new Member(0, "lily", "女", 25, "北京"))); assertEquals(1, dao.add(new Member(0, "susan", "女", 30, "上海"))); } ... } 运行测试用例。 例程:Dynamic 4 查询 @Data @AllArgsConstructor @NoArgsConstructor @ToString public class SearchParams { private String gender; private Integer minAge; private Integer maxAge; private String city; } public interface MemberDao { ... //public List search(HashMap params); public List search(SearchParams params); ... } 在多条件查询时,如果条件的个数和内容不确定,可将参数指定为HashMap或其它可用于封装查询条件的实体类型。 public class MemberDaoTest { ... @Test public void testSearch() { MemberDao dao = MyBatisUtil.getMapper(MemberDao.class); /* HashMap params = new HashMap<>(); params.put("gender", "女"); params.put("minAge", 20); params.put("maxAge", 30); params.put("city", "北京"); */ SearchParams params = new SearchParams("女", 20, 30, "北京"); List members = dao.search(params); System.out.println(members); } ... } 例程:Dynamic