1、resultMap和resultType等参数以及结果集

  <select id="getApplicationByRoleCode" resultType="platform.appframe.entity.AfaApplication" parameterType="java.lang.String" >
select distinct <include refid="Application_Base_Column_List" />
from afa_application a
left join afa_auth_function b
on a.app_id = b.app_id
where b.party_code =#{roleCode}
</select>

resultMap:用于操作本map里头的表,即操作在当前映射文件里头的指定的map。

resultType:用于操作其他map里头的表。

parameterType:可以为java.lang.String、也可以为一个对象比如:appframe.entity.AfaAppMenu

parameterMap:比如:appframe.entity.AfaAppMenu

2、map里头没有的参数在mapper里头要定义清楚

    <select id="getMenusByRoleCodes" resultMap="afaAppMenuMap">
SELECT
<include refid="Base_Column_List" />
FROM AFA_APP_MENU
WHERE MENU_CODE IN
(SELECT a.FUNC_CODE
FROM AFA_APP_FUNCTION A
INNER JOIN AFA_AUTH_FUNCTION B
ON A.FUNC_CODE = B.FUNC_CODE
WHERE B.PARTY_CODE in
<foreach collection="roleCodes" item="roleCode" index="index" open="(" separator="," close=")">
#{roleCode}
</foreach>
<if test="appId!=null">
AND A.APP_ID = #{appId}
</if>
)
</select>

在mapper里头要定义

public interface AfaAppMenuMapper extends Mapper<AfaAppMenu> {
public List<AfaAppMenu> getMenusByRoleCodes(@Param("roleCodes")List<String> roleCodes,@Param("appId")String appId);
}

否则会报Parameter 'roleCodes' not found. Available parameters are [1, 0, param1, param2]

3、分页操作

public Page<AfaAppMenu> queryAfaAppMenuPage(@Param("searcher")Searcher searcher,@Param("page")Page<AfaAppMenu> page);

mybatis里头定义:

    <select id="queryAfaAppMenuPage" resultMap="afaAppMenuMap">
SELECT
<include refid="Base_Column_List" />
FROM AFA_APP_MENU
<trim prefix="where" prefixOverrides="and |or">
<if test="searcher != null and searcher.__QUERYCON != null">
${searcher.__QUERYCON}
</if>
</trim>
ORDER BY SORT_NO ASC
</select>

4、不将实体映射到数据库中

通过@Transient注解,该注解的对象在数据库中实际不存在。

 @Transient
private String context; public String getMenuAppId() {
return menuAppId;
} public void setMenuAppId(String menuAppId) {
this.menuAppId = menuAppId;
}
<result column="CONTEXT" jdbcType="VARCHAR" property="context" />

 5、相关语法整理

foreach 语法

方式一:List<String>方式 
<foreach collection="roleCodes" item="roleCode" index="index" open="(" separator="," close=")">
#{roleCode}
</foreach>
方式二:List<object>方式
<foreach item="func" index="index" collection="appfunc" open="(" separator="," close=")">
#{func.funcCode}
</foreach>

if 语法

添加前后缀:
        <trim prefix="where"  prefixOverrides="and |or">
<if test="searcher != null and searcher.__QUERYCON != null">
${searcher.__QUERYCON}
</if>
</trim> 判断等于某个字符串:
        <if test="appId!='app_menu_id'">
AND A.APP_ID = #{appId}
</if>

sql定义 

  定义:
<sql id="Application_Base_Column_List">
a.APP_ID,a.APP_NAME,a.APP_TYPE,a.IS_OPEN,a.CONTEXT,a.IP,a.PORT,a.PROTOCOL,a.APP_DESC,a.TENANT_ID,a.LOGOUT_URL,a.LAST_MODIFY_TIME
</sql>
使用:
<include refid="Application_Base_Column_List"/>

like语法

方式一:通过concat添加%:
WHERE FUNC_CODE LIKE CONCAT('%',#{key},'%') OR FUNC_NAME LIKE CONCAT('%',#{key},'%') 
方式二:通过$添加%:
where org_name like '%${orgName}%'

最新文章

  1. Codeforces Round #354 (Div. 2) ABCD
  2. 2.ViewBag、ViewData、TempData之间的区别
  3. MVC3异常处理的方法
  4. AC日记——判断字符串是否为回文 openjudge 1.7 33
  5. Unit03 - 对象内存管理 、 继承的意义(上)
  6. Freemyapps赚取积分终极图文教程
  7. 慎用MySQL replace语句
  8. Java虚拟机学习 - 体系结构 内存模型
  9. html标签data大写获取不到值:只能小写+横杠命名
  10. web端及时通讯原理
  11. iOS 之 线性布局
  12. angular 1.26 版本 window.history.back() 自动去顶部
  13. Java字节流在Android中的使用
  14. [LeetCode] Min Cost Climbing Stairs 爬楼梯的最小损失
  15. Spring-framework
  16. 纠结了一下午的问题:运行opencv的HoughLinesP函数出错
  17. CentOS7 网络NAT模式
  18. 使用kubeadm安装Kubernetes
  19. [leetcode-129] 求根到叶子节点数字之和
  20. hibernate映射(学生-科目-成绩)

热门文章

  1. .ssh中的文件的分别意义
  2. INSPIRED启示录 读书笔记 - 第5章 产品管理与软件开发
  3. tree 命令【转】
  4. 关于 kinect 的开发
  5. WebSocket和HTTP的区别与联系
  6. 解决Linux系统在设置alias命令重启后失效的问题
  7. Luogu-1527 [国家集训队]矩阵乘法
  8. 关于view里面xib的问题
  9. 虚拟机开启Linux时出现“我以复制虚拟机”、“我已移动虚拟机”
  10. 使用命令【TLCL】