Mybatis常用总结:参数,返回,执行sql,include等
1.参数注入
1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数
public List<RecordVo> queryList(String workerId, Integer topNum);
<select id="queryList" resultType="com.demo.RecordVo">
SELECT ID id, WORKER_ID workerId, UPDATE_DATE updateDate
FROM USER_RECORDS t
WHERE t.WORKER_ID = #{0}
LIMIT #{1}
</select>
1.2Map或者封装对象,workerId为map里面的键;如果是对象则workerId为对象中的属性,这种方法非常常用
public Integer queryCountByWorkerId(Map queryParam);
<select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM tableName F
WHERE F.WORKER_ID = #{workerId}
</select>
1.3注解
public Integer queryCountByWorkerId(@param(“workerId”)String workerId);
<select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM tableName F
WHERE F.WORKER_ID = #{workerId}
</select>
2.返回
2.1映射<!-- 实体类与表字段对应 -->
<resultMap type="com.demo.DataModule" id="dataModule">
<result column="ID" property="id" />
<result column="CREATE_DATE" property="createDate" />
<result column="WORKERID" property="workerId" />
<result column="UPDATE_DATE" property="updateDate" />
<result column="STATUS" property="status" />
</resultMap>
<select id="queryAll" resultType="dataModule">
select ID,CREATE_DATE,WORKERID from tableName
</select>
这种方式查询语句查询的字段直接就是数据库里面的字段就好了,就定义映射的column
2.2直接返回对象
<select id="queryAll" resultType="com.demo.DataModule">
select ID id,CREATE_DATE createDate,WORKERID workerId from tableName
</select>
这里查询返回的字段别名必须对应返回对象中的属性
3.执行原生sql
3.1sql参数:
public class ParamVo {
private String sql;
//getter setter 省略
}
3.2接口:
/**
* @功能描述: 创建
* @param vo
* @return
*/
public int excuteCreateSql(ParamVo vo);
/**
* @功能描述: 查询
* @param vo
* @return
*/
public List<Map<String, Object>> excuteSelectSql(ParamVo vo);
3.3xml:
<update id="excuteCreateSql">
${sql}
</update>
${}不编译sql直接执行,如果用#{sql}可能报错
<select id="excuteSelectSql" resultType="java.util.Map">
${sql}
</select>
这里不知道返回类型用map或者hashmap作为返回
4.include:有时候两个方法要返回的字段都一样或者where子句一样,这样为了避免重复写代码,就抽出来用include
4.1定义子句相同部分
<sql id="queryChild">
FROM tableName1 F
RIGHT JOIN tableName2 C ON F.WORKER_ID = C.WORKER_ID
WHERE F.STATUS = 1 AND F.WORKER_ID = #{workerId}
ORDER BY C.CREATE_DATE DESC
</sql>
4.2引用
<select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT COUNT(1)
<include refid="queryChild"/>
</select>
<select id="queryListByWorkerId" parameterType="java.util.Map" resultType="com.demo.RecordVo">
SELECT ID id, WORKER_ID workerId, UPDATE_DATE updateDate,......
<include refid="queryChild"/>
</select>
仅供参考,不足之处还请见谅,欢迎指正!转载请标明出处。如有疑问,欢迎评论或者联系我邮箱1034570286@qq.com
Mybatis常用总结:参数,返回,执行sql,include等的更多相关文章
- postgresql shell脚本传递参数并执行sql脚本并
参考: https://stackoverflow.com/questions/7389416/postgresql-how-to-pass-parameters-from-command-line ...
- Mybatis执行sql(insert、update、delete)返回值问题
数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下. 结论: insert: 插入n条记录,返回影响行数n.(n>=1,n为0时实际为插入失败) up ...
- SSIS中执行SQL任务组件参数传递的问题
原文:SSIS中执行SQL任务组件参数传递的问题 症状: 执行SQL任务,传递参数到子查询中,执行报错. 错误: 失败,错误如下:"无法从使用 sub-select 查询的 SQL 语句中派 ...
- 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句
MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...
- PreparedStatement执行sql語句
import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.PreparedStatement; i ...
- log4j打印mybatis执行sql,将占位符换成真实的参数输出
背景: 在我日常码代码的时候,由于对mybatis的动态sql,比较依赖,并且有时候需求复杂,导致sql较长,而且参数众多,当出现问题是,需要将sql,放到navicat里面去执行查看结果,但是对于复 ...
- MyBatis - 常用标签与动态Sql
MyBatis常用标签 ● 定义sql语句:select.insert.delete.update ● 配置JAVA对象属性与查询结构及中列明对应的关系:resultMap ● 控制动态sql拼接:i ...
- Spring Boot入门系列(十九)整合mybatis,使用注解实现动态Sql、参数传递等常用操作!
前面介绍了Spring Boot 整合mybatis 使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper 和pojo类. 接下来介绍使用mybatis 常用注解以及如何传参数等数据库 ...
- Mybatis执行SQL的流程
前篇:Mybatis初始化过程 SqlSession : SqlSession是一个接口,它有两个实现类:DefaultSqlSession (默认)和 SqlSessionManager (弃用,不 ...
- mybatis关于ORM的使用以及设计(三)[参数对象转换为SQL语言]
上节分析了Mapper对象的创建. 在ORM的定义中可以理解为Object->SQLMapper抽象层(这一层并不负责具体的SQL执行.这一层可以理解为SQL代理层) 本节分析以下内容: ①Sq ...
随机推荐
- Log4net - 规则简介
参考页面: http://www.yuanjiaocheng.net/CSharp/csharprumenshili.html http://www.yuanjiaocheng.net/entity/ ...
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- iOS中支付宝集成
iOS中支付宝集成 如今各种的App中都使用了三方支付的功能,现在将我在使用支付宝支付集成过程的心得分享一下,希望对大家都能有所帮助 要集成一个支付宝支付过程的环境,大致需要: 1>公司:先与支 ...
- 高仿it之家新闻客户端源码
仿it之家新闻客户端界面,数据为本地假数据.仅实现了新闻模块的功能. 源码下载:http://code.662p.com/list/11_1.html 详细说明:http://android.662p ...
- Linux网络属性配置
目录 IP地址分类 如何将Linux主机接入到网络中 网络接口的命名方式 ifcfg系列命令 如何配置主机名 如何配置DNS服务器指向 iproute2系列命令 Linux管理网络服务 永久生效配置路 ...
- Xamarin.Android通知详解
一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android下的通知需要获取Notification ...
- 全球HTTPS时代已来,你跟上了吗?
全球HTTPS时代已来,你跟上了吗? 互联网发展20多年,大家都习惯了在浏览器地址里输入HTTP格式的网址.但前两年,HTTPS逐渐取代HTTP,成为传输协议界的"新宠". 早 ...
- 在 Ubuntu 15.04 中使用 ubuntu-make、Eclipse 4.4、Java 8 以及 WTP
Ubuntu 今天发布新版本了 其实昨天(2015-04-23)我就看到了 Ubuntu 发布新版本的新闻,下班后回家的第一件事就是访问 Ubuntu 的官网,很可惜,没有提供下载.今天(2015-0 ...
- git 使用
三个状态 文件由 git 维护三中状态 modified:文件被改动,但还没有被提交 staged:标记被改动的文件到下次需要提交的文件快照 committed:文件已经被安全保存到本地 可以使用命令 ...