Mybatis相关SQL操作总结
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}%'
Mybatis相关SQL操作总结的更多相关文章
- Springboot第五篇:结合myBatis进行SQL操作
前提:和之前同样的,本篇会从前端和后台一起讲述关于SQL的select操作(其他操作原理大致类似,不多做解释了). 大致流程:前端通过AJAX将数据发送到后台的路由,后台路由会根据发送的数据进行SQL ...
- 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念
本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...
- 数据库优化和SQL操作的相关题目
SQL操作 1.有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键).现在如果表中有重复的数据,请删去重复只留下其中的一条.重复的定义就是两条记录的name,ag ...
- 【他山之石】mybatis打印sql日志 相关配置
背景:mybatis的sql日志打印对我来说一直比较迷,哪怕看过网上很多博客后还是这样,这两天刚好又遇到了问题,要查sql不得已又来查阅,这次终于搞定了. mybatis是有提供日志功能支持的,目前支 ...
- mybatis原理分析学习记录,mybatis动态sql学习记录
以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...
- Spring Boot 集成 MyBatis和 SQL Server实践
概 述 Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给出一个完整的 Spring Boot + M ...
- Mybatis设置sql超时时间
开始搭建项目框架的时候,忽略了sql执行超时时间的问题. 原本使用.net开发是,默认的超时时间是30s,这个时间一般一般sql是用不到的,但也不排除一些比较复杂或数据量较大的sql. 而java中, ...
- Mybatis动态sql及分页、特殊符号
目的: mybatis动态sql(案例:万能查询) 查询返回结果集的处理 mybatis的分页运用 mybatis的特殊符号 mybatis动态sql(案例:万能查询) 根据id查询 模糊查询 (参数 ...
- 精尽MyBatis源码分析 - MyBatis 的 SQL 执行过程(一)之 Executor
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
随机推荐
- python cookboo 文件与IO 函数
写出文本数据 g = open('test.txt', 'rt', newline='',encoding = 'utf-8', errors='replace') t是windows平台特有的所谓t ...
- 正则表达式 获取字符串内提取图片URL字符串
#region 获取字符串内提取图片URL字符串 /// <summary> /// 获取字符串内提取图片URL字符串 /// </summary> /// <param ...
- SpringBoot Maven打包项目JAR/WAR
安装Maven 1. 登录 http://maven.apache.org/download.cgi 2. 下载 maven 压缩包 3. 解压apache-maven-3.6.0-bin.tar.g ...
- 关于centos7下/etc/sysconfig/目录没有iptables问题
在新买的centos7服务器中想打开防火墙,采用传统centos6的方式用service iptables restart/stop/status 之后报错: 而在/etc/sysconfig/目录下 ...
- 【P3572】little bird(单调队列+DP)
一眼看上去这个题就要DP,可是应该怎么DP呢,我们发现,数据范围最多支持O(NlogN),但是这种DP貌似不怎么有,所以应该是O(N)算法,自然想到单调队列优化DP. 然后我们先考虑如果不用单调队列应 ...
- input ajax自动补全
页面 <div class="manage-Car-add-info-sn"> <p style="width:25%; height:70%;floa ...
- java深入探究12-框架之Structs
注意每次修改配置文件后必须项目重启 Structs2=structs1+xwork Struct2框架预先实现了一些功能: 1.请求数据的封装:2.文件上传的功能3.对国际化功能的简化4.文件效验功能 ...
- JS,Jquery获取屏幕的宽度和高度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- 初探MyBatis之HelloWorld(二)
二.不使用 XML 构建 SqlSessionFactory 不使用xml构建SqlSessionFactory的话,就要用java代码来连接数据库.我这里直接new DataSorce()接口实现g ...
- linux(centos)安装Maven
搭建maven 下载jar包,将apache-maven-3.2.2-bin.tar.gz上传到服务器 1.解压 tar -zvxf apache-maven-3.2.2-bin.tar.gz 2.移 ...