这是Mybatis的一个小例子,模糊查询
Dao层
package com.dao;
import java.util.List;
import java.util.Map;
import com.domain.Dept;
public interface DeptMapper {
public List<Dept> getDeptList(Map<String, Object> param);
}
Mapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.SystemDeptMapper">
<resultMap id="DeptMap" type="com.domain.Dept">
<id column="id" property="deptId" />
<result column="name" property="name" />
<result column="parentId" property="parentId" />
<result column="sortNo" property="sortNo" />
<collection property="childList" ofType="com.domain.Dept"
javaType="ArrayList" column="{parentId=id}" select="getDeptList" />
<collection property="leaders" javaType="java.util.List"
column="id" select="getLeaderList" />
</resultMap>
<select id="getDeptList" parameterType="map" resultMap="DeptMap">
SELECT
abd.id AS id,
abd. NAME AS 'name',
abd.parent_id AS parentId,
abd.sort_no AS sortNo
FROM
abd
WHERE
parent_id =
#{parentId}
<if test="fuzzyName != null">
AND
abd. NAME like CONCAT('%','#{keyword}','%')
</if>
</select>
<select id="getLeaderList" parameterType="java.lang.Integer" resultType="java.lang.String">
SELECT DISTINCT
au.`name`
FROM
au
LEFT JOIN
aa ON au.user_id = aa.user_id
WHERE
aa.dept_id = #{deptId}
</select>
</mapper>
实体类
package com.domain;
import java.util.Date;
import java.util.List;
/**
1. @Description: 实体类
2. @Title Dept
3. @Package com.domain
*/
public class Dept {
private Integer deptId;
private String name;
private Integer parentId;
private Integer sortNo;
private List<Dept> childList;
private List<String> leaders;
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public Integer getSortNo() {
return sortNo;
}
public void setSortNo(Integer sortNo) {
this.sortNo = sortNo;
}
public List<Dept> getChildList() {
return childList;
}
public void setChildList(List<Dept> childList) {
this.childList = childList;
}
public List<String> getLeaders() {
return leaders;
}
public void setLeaders(List<String> leaders) {
this.leaders = leaders;
}
}
小结:
- resultMap中可以添加多个collections标签,返回结果中可以套多个list
- 若返回结果为一列,并且想让其转换为list,使resultType为resultType=”java.lang.String”
- 模糊查询要使用concat,例如:
<if test="keyword != null">
AND
name like CONCAT('%','#{keyword}','%')
</if>
后语:
初出茅庐,如有不足,请留言赐教。