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

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


文章目录


前言:





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

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

xml 复制代码
// 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

xml 复制代码
// 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去定制化了

xml 复制代码
// 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接口:



UserMapper.xml :



UserMapper接口:

java 复制代码
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;
}

UserMapper.xml :

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语句是一件十分重要的事情!!!🤦‍♂️🤦‍♂️🤦‍♂️

相关推荐
dengqingrui12334 分钟前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
我的心永远是冰冰哒1 小时前
ad.concat()学习
学习
ZZZ_O^O1 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
slomay3 小时前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
yufei-coder3 小时前
掌握 C# 中的 LINQ(语言集成查询)
windows·vscode·c#·visual studio
hengzhepa3 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
vvvae12343 小时前
分布式数据库
数据库
雪域迷影4 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹4 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人5 小时前
SQL基础教程
数据库·sql·oracle