MyBatis3一个查询DAO的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
  * 订单查询(用于订单列表展示用)
  */
public  List<Ord> queryOrd(String ordno, String custno,  int  startRow,  int  rowSize, Ord.St... stArr) {
     Map<String, Object> map = params4queryOrd(ordno, custno, stArr);
     return  getSqlSession().selectList(sqlmapNamespace +  "."  "queryOrd" , map,  new  RowBounds(startRow, rowSize));
}
public  int  countOrd(String ordno, String custno, Ord.St... stArr) {
     Map<String, Object> map = params4queryOrd(ordno, custno, stArr);
     return  getSqlSession().selectOne(sqlmapNamespace +  "."  "countOrd" , map);
}
private  Map<String, Object> params4queryOrd(String ordno, String custno, Ord.St... stArr) {
     Map<String, Object> map =  new  HashMap<>( 3 );
     if  (ordno !=  null ) map.put( "ordno" , ordno);
     if  (custno !=  null ) map.put( "custno" , custno);
     if  (stArr !=  null  && stArr.length >  0 ) {
         int [] arr =  new  int [stArr.length];
         for  ( int  i =  0 ; i < stArr.length; i++) {
             arr[i] = stArr[i].key;
         }
         map.put( "stArr" , arr);
     }
     return  map;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- 订单查询(用于订单列表展示用) -->
< select  id = "queryOrd"  parameterType = "map"  resultMap = "rs_ord" >
     select * from ord
     < include  refid = "sql_queryOrd_where" />
</ select >
< select  id = "countOrd"  parameterType = "map"  resultType = "int" >
     select count(1) from ord
     < include  refid = "sql_queryOrd_where" />
</ select >
< sql  id = "sql_queryOrd_where" >
     < where >
         < if  test = "ordno!=null and ordno!=''" >and ordno=#{ordno}</ if >
         < if  test = "custno!=null and custno!=''" >and custno=#{custno}</ if >
         < if  test = "stArr!=null" >
             state in
             < foreach  item = "st"  index = "index"  collection = "stArr"  open = "("  separator = ","  close = ")" >
                 #{st}
             </ foreach >
         </ if >
     </ where >
</ sql >