自学内容网 自学内容网

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值:

方法一:

useGeneratedKeys 为ture 声明 返回主键

keyProperty 表示要返回的值 封装到对象的属性中

但是这一种方法不支持Orcal数据库。

    <insert id="save2" parameterType="com.findyou.entity.User" useGeneratedKeys="true" keyProperty="id">
        insert into user(username) values(#{username});
    </insert>

方法二:

selectKey标签支持所有的数据库

order  表示先后顺序
keyProperty  给到对象的哪个属性
keyCoLum 数据库里面哪个字段是主键
resuLtType  返回值的类型

    <insert id="save3" parameterType="com.findyou.entity.User">
        <selectKey order="AFTER" keyProperty="id" resultType="int" keyColumn="id">
            select LAST_INSERT_ID();
        </selectKey>
        insert into user(username) values(#{username});
    </insert>

动态sql:

 <if>标签

if标签里面的属性 test= "条件",当这个条件满足的时候才会进去。

<where>标签

where标签解决and等拼接的问题。

但需要注意的是:where标签只会 智能的去除(忽略)首个满足条件语句的前缀。所以建议在使用where标签时,每个语句最好写上 and 前缀或者 or 前缀。

注意的是:

Integer 类型空的情况下是 null, int类型的空是0。因此在判断的时候写的是 != null and != ''

    <!--动态sql-->
    <select id="findByIdAndUsernameIf" resultType="user" parameterType="user">
        select * from user
        <where>
            <if test="id != null and id != ''">
                and id = #{id}
            </if>
            <if test="username != null">
                and username = #{username}
            </if>

        </where>
    </select>

原文地址:https://blog.csdn.net/m0_74304371/article/details/142817622

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!