========================
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