My Batis Day3

本文介绍了MyBatis框架如何通过动态SQL实现根据条件生成不同SQL语句,比较了它与JDBC的区别,强调了其优点如代码简洁和灵活性,同时也提到了SQL编写复杂性和数据库依赖性的缺点,适合高性能和需求多变的项目。
摘要由CSDN通过智能技术生成

MyBatis框架动态SQL

在使用MyBatis框架进行数据库操作时,我们经常需要根据不同的条件生成不同的SQL语句。这就是动态SQL的概念。MyBatis提供了一种灵活的方式来处理动态SQL,使得我们能够根据实际需求来构建和执行不同的SQL语句。

为什么需要动态SQL?

传统的SQL语句在查询或更新数据时,通常是写死的,无法根据不同的条件进行动态调整。例如,在查询用户信息时,如果只有一个条件,比如按照用户名查询,那么SQL语句可以是SELECT * FROM user WHERE username = ?。但是如果还有其他条件,比如按照性别、年龄等查询,那么就需要修改SQL语句,添加相应的条件。这样的做法既繁琐又不利于代码的维护和复用。

而使用动态SQL,则可以根据实际情况动态地生成SQL语句,避免了手动拼接SQL字符串的麻烦,提高了代码的可读性和可维护性。

MyBatis中的动态SQL

1.if标签

代码如下:

if标签用于在SQL语句中根据条件进行判断。使用方式如下:

<select id="getUserList" parameterType="User" resultType="User">
  SELECT * FROM user
  WHERE 1=1
    <if test="id != null">
      AND id = #{id}
    </if>
    <if test="username != null">
      AND username LIKE CONCAT('%', #{username}, '%')
    </if>
    <if test="age != null and age &gt; 0">
      AND age = #{age}
    </if>
</select>

2.choose when otherwise标签

<select id="getUserList" parameterType="User" resultType="User">
  SELECT * FROM user
  WHERE 1=1
    <choose>
      <when test="gender == 'male'">
        AND gender = 'M'
      </when>
      <when test="gender == 'female'">
        AND gender = 'F'
      </when>
      <otherwise>
        AND gender IS NULL
      </otherwise>
    </choose>
</select>

3.set标签

<update id="updateUser" parameterType="User">
  UPDATE user
  <set>
    <if test="username != null">
      username = #{username},
    </if>
    <if test="password != null">
      password = #{password},
    </if>
    <if test="age != null and age &gt; 0">
      age = #{age},
    </if>
  </set>
  WHERE id = #{id}
</update>


使用MyBatis的好处
一、MyBatis框架的优点:
  1. 与JDBC相比,减少了50%以上的代码量。 
  2. MyBatis是最简单的持久化框架,小巧并且简单易学。 
  3. MyBatis灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。 
  4. 提供XML标签,支持编写动态SQL语句(XML中使用if, else)。  
  5. 提供映射标签,支持对象与数据库的ORM字段关系映射(在XML中配置映射关系,也可以使用注解)。
  二、MyBatis框架的缺点:  
  1. SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。 
  2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
  三、MyBatis框架适用场合:
   MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。  
   对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
————————————————

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值