Mybatis中<trim>标签用法

trim标签的属性:
  1. prefix: 拼接sql需要加上的前缀。
  2. prefixOverrides:前缀需要覆盖消除的内容。
  3. suffix:拼接sql需要加上的后缀
  4. suffixOverrides:后缀需要覆盖消除的内容

例子:

有下面sql语句

select *from user where username = ? and password = ? and role = ?

trim标签写法如下

<select id="selectUser" parameterType="User" resultType="User">
	select *from user 
        <where>
            <trim prefixOverrides="and">
            <if test="username != null and username != ''"> and username = #{name}</if>
            <if test = "password != null and password != ''">and password = #{password}</if>
            <if test = "role != null and role != ''">and role = #{role}</if>
            </trim>
                
        </where>
    </select>
insert into user (id, username,password,birthday,role) values (?,?,?,?,?)

trim标签写法如下

 <insert id="insertUser" parameterType="User" >
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null and id != ''">id,</if>
            <if test="username != null and username != ''">username,</if>
            <if test="password != null and password != ''">password ,</if>
            <if test="birthday!= null and birthday != ''">birthday,</if>
            <if test="role != null and role != ''">role,</if>
        </trim>
        <trim prefix=" values (" suffix=")" suffixOverrides=",">
            <if test="id != null and id != ''">#{id},</if>
            <if test="username != null and username != ''">#{username},</if>
            <if test="password != null and password != ''">#{password},</if>
            <if test="birthday!= null and birthday != ''">#{birthday},</if>
            <if test="role != null and role != ''">#{role},</if>
        </trim>
    </insert>
update user set username = ?,password = ?,role = ? where id = ?
<update id="updateUser" parameterType="User">
        update user
        <set>
            <trim suffixOverrides=",">
                <if test="id != null and id != ''">id,</if>
                <if test="username != null and username != ''">username,</if>
                <if test="password != null and password != ''">password ,</if>
                <if test="birthday!= null and birthday != ''">birthday,</if>
                <if test="role != null and role != ''">role,</if>
            </trim>
        </set>
        where id = #{id}
    </update>
结束!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. <where>标签的作用是在动态SQL语句,用来包含多个条件语句,并且在这些条件语句之间使用AND或OR连接起来,以便在生成的SQL语句正确地处理多个条件语句。 2. <set>标签的作用是在动态SQL语句,用来设置要更新的列和值,以便在生成的SQL语句正确地更新指定的列和值。 3. <trim>标签可以通过设置prefix、suffix、prefixOverrides和suffixOverrides属性来实现<where>标签和<set>标签的功能。其,prefix和suffix属性用来指定要添加到生成的SQL语句开头和结尾的字符串,prefixOverrides和suffixOverrides属性用来指定要从生成的SQL语句开头和结尾删除的字符串。通过设置这些属性,<trim>标签可以动态地生成SQL语句,并且可以在语句正确地处理多个条件语句和更新值。 4. 解决驼峰问题的方式有两种: (1)使用下划线命名法:将驼峰命名法的大字母转换成小,并在字母前添加下划线。例如,将userName转换成user_name。 (2)使用@Results注解或resultMap标签的property属性:在@Results注解或resultMap标签的property属性,使用驼峰命名法指定Java类属性名,然后使用column属性指定列名。例如,@Results({@Result(property="userName", column="user_name")})或<resultMap id="userMap" type="User"><result property="userName" column="user_name"/></resultMap>。 5. 传递两个及两个以上参数时,有三种方法: (1)使用@Param注解:在Mapper接口的方法参数前,使用@Param注解来指定参数名称。例如,@Select("SELECT * FROM user WHERE name=#{name} AND age=#{age}") List<User> getUserList(@Param("name") String name, @Param("age") int age); (2)使用Map类型参数:将多个参数放在一个Map,以参数名作为Map的key。例如,@Select("SELECT * FROM user WHERE name=#{name} AND age=#{age}") List<User> getUserList(Map<String, Object> params); (3)使用JavaBean对象参数:将多个参数放在一个JavaBean对象,以JavaBean的属性名作为参数名。例如,@Select("SELECT * FROM user WHERE name=#{user.name} AND age=#{user.age}") List<User> getUserList(@Param("user") User user);

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值