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
转载于:https://www.cnblogs.com/itechpark/p/yinzei_mybatis.html
Mybatis常用总结:参数,返回,执行sql,include等相关推荐
- mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题
数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下. 结论: insert: 插入n条记录,返回影响行数n.(n>=1,n为0时实际为插入失败) up ...
- mysql免密码登录, 及使用-e 参数执行sql脚本
来源:http://www.tuicool.com/articles/7JbmYr 我们在编写shell脚本的时候,经常需要和 mysql 交互. 如果是交互环境,可能使用这样的命令登录到mysql ...
- pdo_fetch执行mysql_PDO中执行SQL语句的三种方法
在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...
- mybatis传入map参数
初学mybatis产生两个问题: mybatis传入参数执行SQL语句好像并不是很智能?xml文件中指定parameterType只能是一种数据类型.假设我现在需要执行一条SQL语句,里面有两个参数: ...
- mysql(十)条件语句、循环语句、动态执行SQL语句
MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGINdeclare i int de ...
- mybatis查询返回空,SQL数据库执行有数据!
我的数据库为Oracle,可以插入,更新,但在在Mybatis中执行SQL查询返回的数据发现返回NULL,但是生成SQL放在数据库中查询是有数据的,并且SQL是正确的! 这是没有改动的XML: < ...
- mybatis 将sql拼接成String类型的变量当做参数传入执行
mybatis 将sql拼接成String类型的变量当做参数传入执行 mybatis 将sql拼接成String类型的变量当做参数传入执行 遇坑 之前传参数都是使用#{}的方式去传递,这样SQL就能拼 ...
- Mybatis常用的动态SQL标签讲解
先让我们看看mybatis常用动态SQL的标签有哪一些 如果mybatis和SSM整合环境不会搭建请看这篇 https://blog.csdn.net/weixin_44012722/article/ ...
- java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...
- java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...
最新文章
- 用Leangoo Scrum看板工具管理OKR-目标管理
- Linux vim使用心得III
- 中兴智能视觉大数据公交车专用道移动智能电子警察系统功能、特点及优势详细介绍...
- 2021-03-16 汽车二自由度操纵稳定性 Matlab simulink
- linux 内核协助的探测
- NatureGenetics:所有五个异源四倍体棉花起源被厘清
- 安装vs2008出现的问题
- el-table 树形表格 自定义展开图标_实践一个树形组件
- Ubuntu crontab 定时 python 详细
- Android FancyCoverFlow的使用实现图片画廊形式的呈现
- Missing Push Notification Entitlement警告-----以及解决方法
- linux yum安装jdk
- 王道 计算机网络试题讲解_王道考研系列--计算机网络
- 用户故事与敏捷方法笔记---搜集故事
- centos7构建kylo-0.10.1
- python教程55--D-Tale使用介绍
- msxml3.dll 错误'800c0005' 系统未找到指定的资源错误
- L 2 聚焦和发散思维模式
- Android 中关于九宫格图片的那些事
- mysql数据库击穿_面试中经常出现的缓存穿透、雪崩和击穿到底是什么?