使用Mybatis实现数据的增、删、改以及复杂查询

本文介绍了如何使用Mybatis进行数据的增、删、改、查操作,重点讲解了复杂查询的实现,包括if判断、trim前缀后缀、foreach循环等动态SQL的构建,并详细阐述了foreach元素的属性及其在不同场景下的应用。同时,讨论了Mybatis调用存储过程的方法,以应对特别复杂的查询需求。
摘要由CSDN通过智能技术生成

mybatis直接与数据库交互,实现了数据操作层,对数据库的操作主要有:增加、删除、更改、查询以及存储过程调用等操作。

一、数据操纵(增、删、改、查)

1、新增数据、更改数据传递的参数均为记录类型,mapper配置文件内容如下:

<insert id="insert" parameterType="com.springmvc.entity.SUser" >
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Jan 17 11:25:43 CST 2018.
    -->
  <!--表示插入之后查询相应的插入数据,无需实现相应操作时可删除-->
 <selectKey resultType="java.lang.String" keyProperty="personid" order="AFTER" >
      SELECT SCOPE_IDENTITY()
    </selectKey>
    insert into S_USER (LOGINNAME, PASSWORD, UNTID, ROLEID)
    values (#{loginname,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{untid,jdbcType=VARCHAR}, 
      #{roleid,jdbcType=CHAR})
  </insert>
<update id="updateUser" parameterType="com.springmvc.entity.SUser">
        update S_USER set LOGINNAME=#{loginname,jdbcType=VARCHAR},PASSWORD=#{password,jdbcType=VARCHAR},UNTID=#{untid,jdbcType=VARCHAR},ROLEID=#{roleid,jdbcType=CHAR} WHERE PERSONID = #{personid,jdbcType=VARCHAR}
  </update>
2、删除数据

3、一般数据查询

4、复杂查询

mybatis复杂 查询sql主要有一下几类:

1)、通过if判断动态组织sql;

<select id="findActiveBlogLike" resultType="Blog">
  SELECT * FROM BLOG WHERE state = ‘ACTIVE’ 
<!--通过条件判断动态生成sql-->
  <if test="title != null">
    AND title like #{title}
  </if>
  <if test="author != null and author.name != null">
    AND author_name like #{author.name}
  </if>
</select>

2)、通过choose (when,otherwize) (相当于java 语言中的 switch ,与 jstl 中的choose 很类似)动态组织sql;

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG WHERE state = ‘ACTIVE’
  <choose>
    <when test="title != null">
      AND title like #{title}
    </when>
    <when test="author != null and author.name != null">
      AND author_name like #{author.name}
    </when>
    <otherwise>
      AND featured = 1
    </otherwise>
  </choose>
</select>

3)、trim前缀、后缀组织复杂sql;

<select id="getUsertList_if_trim" resultMap="resultMap_User">  
    SELECT * 
      FROM user u
<!--使用trim能够有效避免在依次进行条件判断,组合查询条件时出现where后无条件或者where 后直接连接 and符合等问题-->
<!--有trim根据是否有条件确定是否在查询中增加where,也根据条件组合情况自动添加 条件连接符号(and 或者 or)-->
 <trim prefix="WHERE" prefixOverrides="AND|OR">  
        <if test="username !=null ">  
            u.username LIKE CONCAT(CONCAT('%', #{
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值