mybatis 新增判断空

本文详细介绍了MyBatis中使用动态SQL进行新增操作的方法,包括如何使用`<trim>`标签来处理参数的可选性,以及如何利用`useGeneratedKeys`和`keyProperty`属性来获取自增ID。


mybatis 动态新增

<insert id="insertSelective" parameterType="com.yimayhd.snscenter.client.domain.ComentDO" useGeneratedKeys="true" keyProperty="id" >

    insert into com_coment
    <trim prefix="(" suffix=")" suffixOverrides="," >
      domain,
      status,
      <if test="gmtCreated != null" >
        gmt_created,
      </if>
      <if test="gmtModified != null" >
        gmt_modified,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      #{domain,jdbcType=INTEGER},
      #{status,jdbcType=INTEGER},
      <if test="gmtCreated != null" >
        #{gmtCreated,jdbcType=TIMESTAMP},
      </if>
      <if test="gmtModified != null" >
        #{gmtModified,jdbcType=TIMESTAMP},
      </if>
    </trim>
  </insert>
MyBatis-Plus新增角色API映射时进行重复判断,可通过以下几种常见方法实现: ### 使用 BaseMapper 的内置方法查询 可借助 BaseMapper 的 `selectOne` 方法,依据角色的唯一标识(如角色名)来查询数据库,查看该角色是否已存在。 ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.example.learn.bean.Role; import org.springframework.stereotype.Repository; @Repository public interface RoleMapper extends BaseMapper<Role> { default boolean isRoleExists(String roleName) { QueryWrapper<Role> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("role_name", roleName); Role role = selectOne(queryWrapper); return role != null; } } ``` 在上述代码里,`isRoleExists` 方法借助 `QueryWrapper` 构建查询条件,查询角色名等于传入参数的角色。若查询结果不为,就表明该角色已存在。 ### 利用 Service 层的逻辑判断 在 Service 层调用 Mapper 方法进行重复判断,示例如下: ```java import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.example.learn.bean.Role; import org.example.learn.mapper.RoleMapper; import org.springframework.stereotype.Service; @Service public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> { public boolean addRole(Role role) { if (getBaseMapper().isRoleExists(role.getRoleName())) { return false; } return save(role); } } ``` 在 `addRole` 方法中,先调用 `isRoleExists` 方法判断角色是否存在,若存在则返回 `false`,否则调用 `save` 方法保存角色。 ### 自定义 SQL 语句 若内置方法无法满足需求,可自定义 SQL 语句进行重复判断。 ```xml <select id="isRoleExists" resultType="java.lang.Boolean"> SELECT COUNT(*) > 0 FROM role WHERE role_name = #{roleName} </select> ``` 在 Mapper 接口中定义对应的方法: ```java import org.apache.ibatis.annotations.Select; public interface RoleMapper extends BaseMapper<Role> { @Select("SELECT COUNT(*) > 0 FROM role WHERE role_name = #{roleName}") boolean isRoleExists(String roleName); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值