Java后端开发猿不可不知的,Mybatis几种使用方式总结

mybatis框架主要工作于数据访问层,侧重于与数据库打交道的sql语句编写,对sql要求达到比较熟练的程度,本文将介绍以下几个方面的使用参数注入,返回对象,执行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里面的键

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>

 

 

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>

 

关注公众号“java工会”,获取更多技术干货!

加入qq群727096055,阿里大神和你聊技术!

转载于:https://www.cnblogs.com/javagoh/p/bb.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值