Saturday, 17 August 2013

how to pass custom class parameter in myBatis

how to pass custom class parameter in myBatis

//this is my custom Page class
public class Page<T> {
private int pageNo = 1;
private int pageSize = 5;
private int totalRecord;
private int totalPage;
private List<T> results;
//store the query conditon parameter that could be add dynamically
private Map<String, Object> params = new HashMap<String, Object>();
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
int totalPage = totalRecord%pageSize==0 ? totalRecord/pageSize :
totalRecord/pageSize + 1;
this.setTotalPage(totalPage);
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<T> getResults() {
return results;
}
public void setResults(List<T> results) {
this.results = results;
}
public Map<String, Object> getParams() {
return params;
}
public void setParams(Map<String, Object> params) {
this.params = params;
}
}
// Mapper XML //here how to get the query parameter value in params (this
is a HashMap in Page Class) select * from vincent_user where name=
#{params.name} and #{params.age}
//test code
@Test
public void findUsersByPage(){
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Page<User> page = new Page<User>();
page.setPageNo(1);
page.setPageSize(10);
Map<String, Object> params=new HashMap<String, Object>();
params.put("name", "%andy%");
params.put("age", 18);
page.setParams(params);
List<User> users = userMapper.findUsersPage(page);
page.setResults(users);
System.out.println(page);
System.out.println("--------------------------------------------------");
for (User user : users) {
System.out.println(user.getName());
}
} finally {
sqlSession.close();
}
}

No comments:

Post a Comment