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等相关推荐

  1. mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题

    数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下. 结论: insert:   插入n条记录,返回影响行数n.(n>=1,n为0时实际为插入失败) up ...

  2. mysql免密码登录, 及使用-e 参数执行sql脚本

    来源:http://www.tuicool.com/articles/7JbmYr 我们在编写shell脚本的时候,经常需要和 mysql 交互. 如果是交互环境,可能使用这样的命令登录到mysql ...

  3. pdo_fetch执行mysql_PDO中执行SQL语句的三种方法

    在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...

  4. mybatis传入map参数

    初学mybatis产生两个问题: mybatis传入参数执行SQL语句好像并不是很智能?xml文件中指定parameterType只能是一种数据类型.假设我现在需要执行一条SQL语句,里面有两个参数: ...

  5. mysql(十)条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGINdeclare i int de ...

  6. mybatis查询返回空,SQL数据库执行有数据!

    我的数据库为Oracle,可以插入,更新,但在在Mybatis中执行SQL查询返回的数据发现返回NULL,但是生成SQL放在数据库中查询是有数据的,并且SQL是正确的! 这是没有改动的XML: < ...

  7. mybatis 将sql拼接成String类型的变量当做参数传入执行

    mybatis 将sql拼接成String类型的变量当做参数传入执行 mybatis 将sql拼接成String类型的变量当做参数传入执行 遇坑 之前传参数都是使用#{}的方式去传递,这样SQL就能拼 ...

  8. Mybatis常用的动态SQL标签讲解

    先让我们看看mybatis常用动态SQL的标签有哪一些 如果mybatis和SSM整合环境不会搭建请看这篇 https://blog.csdn.net/weixin_44012722/article/ ...

  9. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  10. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

最新文章

  1. 用Leangoo Scrum看板工具管理OKR-目标管理
  2. Linux vim使用心得III
  3. 中兴智能视觉大数据公交车专用道移动智能电子警察系统功能、特点及优势详细介绍...
  4. 2021-03-16 汽车二自由度操纵稳定性 Matlab simulink
  5. linux 内核协助的探测
  6. NatureGenetics:所有五个异源四倍体棉花起源被厘清
  7. 安装vs2008出现的问题
  8. el-table 树形表格 自定义展开图标_实践一个树形组件
  9. Ubuntu crontab 定时 python 详细
  10. Android FancyCoverFlow的使用实现图片画廊形式的呈现
  11. Missing Push Notification Entitlement警告-----以及解决方法
  12. linux yum安装jdk
  13. 王道 计算机网络试题讲解_王道考研系列--计算机网络
  14. 用户故事与敏捷方法笔记---搜集故事
  15. centos7构建kylo-0.10.1
  16. python教程55--D-Tale使用介绍
  17. msxml3.dll 错误'800c0005' 系统未找到指定的资源错误
  18. L 2 聚焦和发散思维模式
  19. Android 中关于九宫格图片的那些事
  20. mysql数据库击穿_面试中经常出现的缓存穿透、雪崩和击穿到底是什么?

热门文章

  1. TypeScript 终极初学者指南
  2. 一篇文章带你搞懂前端面试技巧及进阶路线
  3. 图解 React-router 源码
  4. 讲讲volatile的作用
  5. IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)
  6. Docker镜像构成和定制
  7. 一张图看懂阿里云网络产品[十二]云企业网
  8. IBM 的大型机 z Systems 引入 Go 语言
  9. 九妹带你走向 架构师
  10. 在Centos中yum安装和卸载软件的使用方法