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

相关推荐
Rytter42 分钟前
Android逆向学习(八)Xposed快速上手(上)
android·学习
千月落1 小时前
ClickHouse副本集群
服务器·数据库·clickhouse
jjkkzzzz1 小时前
Mysql常用语句汇总
数据库·mysql
找不到、了1 小时前
聊聊对Mysql的理解
数据库·mysql
kngines1 小时前
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.2 数据类型转换(CAST函数/自定义函数)
数据库·postgresql·数据分析·filter·自定义函数·cte
Kx…………1 小时前
Day3:设置页面全局渐变线性渐变背景色uniapp壁纸实战
前端·学习·uni-app·实战·项目
岑梓铭1 小时前
考研408《计算机组成原理》复习笔记,第二章计算机性能
笔记·考研·408·计算机组成原理
star_up1 小时前
opencv-python基础知识
笔记
等什么君!1 小时前
学习spring boot-拦截器Interceptor,过滤器Filter
java·spring boot·学习
caihuayuan42 小时前
Linux环境部署iview-admin项目
java·大数据·sql·spring·课程设计