详解MyBatis 常用写法

所属分类: 软件编程 / java 阅读数: 44
收藏 0 赞 0 分享

什么是 MyBatis ?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1、forEach 循环

  forEach 元素的属性主要有 item, idnex, collection, open, separator, close。

1.collection:传入的 List 或 Array 或自己封装的 Map。
2.item:集合中元素迭代时的别名。
3.idnex:集合中元素迭代是的索引。
4.open:where 后面表示以什么开始,如以‘('开始。
5.separator:表示在每次进行迭代是的分隔符。
6.close:where后面表示以什么结束,如以‘)'结束。

//mapper中需要传递一个容器
public List<User> queryByIdList(List<Integer> userIdList);

<select id="queryByIdList" resultMap="BaseResultMap" parameterType="map">
  SELECT * FROM user
  WHERE userId IN
  <foreach collection="userIdList" item="id" index="index" open="(" close=")" separator=",">
    #{id}
  </foreach>
</select>

 

2、concat 模糊查询

//模糊查询使用concat拼接sql
<select id="queryByName" resultMap="BaseResultMap" paramterType"string">
  SELECT * FROM user
  <where>
    <if test="name != null">
      name like concat('%', concat(#{name}, '%'))
    </if>
  </where>
</select>

3、if + where 标签

用 if 标签判断参数是否有效来进行条件查询。

<select id="getUserList" resultMap="BaseResultMap" paramterType="com.demo.User">
  SELECT * FROM user
  <where>
    <if test="userId !=null and userId!= ''">
      userId= #{userId}
    </if>
    <if test="name !=null and name!= ''">
      AND name= #{name}
    </if>
    <if phone="userId !=null and phone!= ''">
      AND phone= #{phone}
    </if>
  </where>
</select>

where 动态语句中,where 标签会自动去掉 AND 或 OR。防止 WHERE AND 错误。

4、if + set

使用 set 标签可以动态的配置 SET 关键字,使用 if + set 标签,如果某项为 null 则不进行更新。

<update id="updateUser" paramterType="com.demo.User">
    UPDATE user
    <set>
        <if test=" name != null and name != ''">
            name = #{name},
        </if>
        <if test=" phone != null and phone != ''">
            phone = #{phone},
        </if>
    </set>
    WHERE userId = #{userId}
</update>

5、if + trim 代替 where/set 标签

  trim 可以更灵活的去处多余关键字的标签,可以实现 where 和 set 的效果。

<select id="getUserList" resultMap="BaseResultMap" paramterType="com.demo.User">
  SELECT * FROM user
  <trim prefix="WHERE" prefixOverrides="AND|OR">
    <if test="userId !=null and userId!= ''">
      userId= #{userId}
    </if>
    <if test="name !=null and name!= ''">
      AND name= #{name}
    </if>
    <if phone="userId !=null and phone!= ''">
      AND phone= #{phone}
    </if>
  </trim>
</select>

<update id="updateUser" paramterType="com.demo.User">
  UPDATE user
  <trim prefix="SET" suffixOverrides=",">
    <if test=" name != null and name != ''">
      name = #{name},
    </if>
    <if test=" phone != null and phone != ''">
      phone = #{phone},
    </if>
  </trim>
  WHERE userId = #{userId}
</update>

5、choose(when, otherwise)标签

  choose 标签是按顺序判断其内部 when 标签中的 test 条件是否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满足,则执行 otherwise 中的 sql。类似 java 中的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

<select id="selectCustomerByCustNameAndType" parameterType="map" resultMap="BaseResultMap">
  SELECT * FROM user
  <choose>
    <when test="Utype == 'name'">
      WHERE name = #{name} 
    </when>
    <when test="Utype == 'phone'">
      WHERE phone= #{phone}
    </when>
    <when test="Utype == 'email'">
      WHERE email= #{email}
    </when>
    <otherwise>
      WHERE name = #{name}
    </otherwise>
  </choose>
</select>

总结

以上所述是小编给大家介绍的MyBatis 常用写法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

java实现背单词程序

这篇文章主要为大家详细介绍了java实现背单词程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java实现单词查询小程序

这篇文章主要为大家详细介绍了java实现单词查询小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java程序开发环境配置图文教程

这篇文章主要为大家详细介绍了Java程序开发环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解ssh框架原理及流程

在本文中小编给大家整理的是关于ssh框架原理及流程的相关知识点内容,有此需要的朋友们可以学习下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解springmvc常用5种注解

在本篇里我们给大家总结了关于springmvc常用5种注解相关知识点以及实例代码,需要的朋友们参考下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作(2)

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Spring Boot假死诊断实战记录

这篇文章主要给大家介绍了关于Spring Boot假死诊断的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java计时新姿势StopWatch详解

这篇文章主要介绍了Java计时新姿势StopWatch,最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时的新姿势「StopWatch」,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现点击按钮弹出新窗体功能

这篇文章主要为大家详细介绍了java实现点击按钮弹出新窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多