mybatis06:动态sql:就是在拼接sql(+sql语句案例)

mybatis06:动态sql:就是在拼接sql(+sql语句案例)



前言:

分析:

在这里插入图片描述



在这里插入图片描述



在这里插入图片描述


提示:以下是本篇文章正文内容:

一、if(用来逻辑判断)(test里面写判断表达式)

// if + where
<select id="queryBlogIF" parameterType="map" resultType="com.zhu.pojo.Blog">
select *from blog
<where>
    <if test="title != null">
        title = #{title}
    </if>
    <if test="author != null">
        and author = #{author}
    </if>
</where>
</select>


二、choose_when_otherwise 类比于 Switch_case_default

// choose_when_otherwise + where
<select id="getTitleIF2" parameterType="map" resultType="Blog">
select *from mybatis.blog
<where>
    <choose>
        <when test="title!=null">
            title=#{title}
        </when>
        <when test="author!=null">
            author=#{author}
        </when>
        <otherwise>
            views=#{views}
        </otherwise>
    </choose>
</where>
</select>


三、trim (where, set) where,set就够用了,我们可以不用使用trim去定制化了

// update + set
<update id="updateBlog" parameterType="map">
update mybatis.blog
<set>
    <if test="title!=null">
        title=#{title},
    </if>
    <if test="author!=null">
        author=#{author},
    </if>
    <if test="views!=null">
        views=#{views},
    </if>
</set>
where id=#{id}
</update>

// 如果where元素 没有按照正常套路出牌,我们可以通过 自定义trim元素 来 定制where元素的功能
// 例如:和where元素等价的自定义trim元素为:
<trim prefix="WHERE" prefixOverrides="AND|OR">
......
</trim>

// 和set元素等价的自定义trim元素表示为:
<trim prefix="SET" suffixOverrides="," >
......
</trim>


四、foreach:(循环)

在这里插入图片描述



五.学会写sql语句:😊😊😊(练习)(根据UserMapper接口里面的抽象方法 写 sql语句)


(1)UserMapper接口:(图解)

在这里插入图片描述



(2)UserMapper.xml :(图解)

在这里插入图片描述



(1)UserMapper接口:(代码)

public interface UserMapper {
    // add,增加用户信息
    int add(User user)throws Exception;

    // getLoginUser,通过userCode获取User
    User getLoginUser(@Param("userCode") String userCode)throws Exception;

    // getUserList,通过条件查询-userList
    List<User> getUserList(@Param("userName")String userName,@Param("userRole")int userRole,
                           @Param("from")int currentPageNo,@Param("pageSize")int pageSize)throws Exception;

    // getUserCount,通过条件查询-用户表记录数
    int getUserCount(@Param("userName") String userName,@Param("userRole") int userRole)throws Exception;

    // deleteUserById,通过userId删除user
    int deleteUserById(@Param("delId") int delId)throws Exception;

    // getUserById,通过userId获取user
    User getUserById(@Param("id")int id)throws Exception;

    // modify,修改用户信息
    int modify(User user)throws Exception;

    // updatePwd,修改当前用户密码
    int updatePwd( @Param("id")int id,@Param("pwd") String pwd)throws Exception;
}

(2)UserMapper.xml :(代码)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.my.dao.user.UserMapper">

    <!--增加用户信息-->
    <insert id="add" parameterType="User">
        insert into smbms_user(id,userCode,userName,userPassword,gender,birthday,phone,address,userRole,createdBy,creationDate)
        values(#{id},#{userCode},#{userName},#{userPassword},#{gender},#{birthday},#{phone},#{address},#{userRole},#{createdBy},#{creationDate})
    </insert>

    <!--通过userCode获取User-->
    <select id="getLoginUser" parameterType="String" resultType="User">
        select * from smbms_user where userCode = #{userCode}
    </select>

    <!--通过条件查询-userList-->
    <select id="getUserList" resultType="User">
        select * from smbms_user
        <where>
            <if test="userName!=null">
                userName = #{userName}
            </if>
            <if test="userRole!=0">
                and userRole = #{userRole}
            </if>
        </where>
        limit #{from},#{pageSize}
    </select>

    <!--通过条件查询-用户表记录数-->
    <select id="getUserCount" parameterType="String" resultType="_int">
        select count(*) from smbms_user
        <where>
            <if test="userName!=null">
                userName = #{userName}
            </if>
            <if test="userRole!=0">
                and userRole = #{userRole}
            </if>
        </where>
    </select>

    <!--通过userId删除user-->
    <delete id="deleteUserById" parameterType="_int">
        delete from smbms_user where id = #{delId}
    </delete>

    <!--通过userId获取user-->
    <select id="getUserById" parameterType="_int" resultType="User">
        select * from smbms_user where id = #{id}
    </select>

    <!--修改用户信息-->
    <update id="modify" parameterType="User">
        update smbms_user
        <set>
            <if test="userCode!=null">
                userCode = #{userCode},
            </if>
            <if test="userName!=null">
                userName = #{userName},
            </if>
            <if test="userPassword!=null">
                userPassword = #{userPassword},
            </if>
            <if test="gender!=null">
                gender = #{gender},
            </if>
            <if test="birthday!=null">
                birthday = #{birthday},
            </if>
            <if test="phone!=null">
                phone = #{phone},
            </if>
            <if test="address!=null">
                address = #{address},
            </if>
            <if test="userRole!=null">
                userRole = #{userRole},
            </if>
            <if test="modifyBy!=null">
                modifyBy = #{modifyBy},
            </if>
            <if test="modifyDate!=null">
                modifyDate = #{modifyDate}
            </if>
        </set>
        where id = #{id}
    </update>

    <!--修改当前用户密码-->
    <update id="updatePwd">
        update smbms_user set userPassword = #{pwd}
        where id = #{id}
    </update>

</mapper>

总结

提示:这里对文章进行总结:
💕💕💕
熟练的书写sql语句是一件十分重要的事情!!!🤦‍♂️🤦‍♂️🤦‍♂️

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lennard-lhz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值