Java中使用动态mybatis语句经典用法

这个代码示例展示了如何在Java中使用MyBatis的动态SQL进行数据库的增删改查操作,避免了XML配置,直接在接口方法上使用注解实现条件拼接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Java中使用动态mybatis语句访问DB的例子如下,官方建议不用XML.

package com.test.econtract.esign2bcore.dao;

import com.test.econtract.esign2bcore.dao.model.PlatformInfoDO;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface PlatformInfoMapper {

   @Insert(value = {
           "<script> ",
           "INSERT INTO platform_info ",
           "<trim prefix='(' suffix=')' suffixOverrides=','> ",
           "<if test='platName!=null'>plat_name,</if> ",
           "<if test='appId!=null'>app_id,</if> ",
           "<if test='appSecrect!=null'>app_secrect,</if> ",
           "<if test='signFrom!=null'>sign_from,</if> ",
           "<if test='description!=null'>description,</if> ",
           "<if test='deletedAt!=null'>deleted_at,</if> ",
           "</trim> ",
           "VALUES ",
           "<trim prefix='(' suffix=')' suffixOverrides=','> ", 
           "<if test='platName!=null'>#{platName},</if> ",
           "<if test='appId!=null'>#{appId},</if> ",
           "<if test='appSecrect!=null'>#{appSecrect},</if> ",
           "<if test='signFrom!=null'>#{signFrom},</if> ",
           "<if test='description!=null'>#{description},</if> ",
           "<if test='deletedAt!=null'>#{deletedAt},</if> ",
           "</trim> ",
           "</script> ",
   })
   @Options(useGeneratedKeys = true, keyColumn = "id")
   Integer insert(PlatformInfoDO insert);

   @Update(value = {
           "<script> ",
           "UPDATE platform_info",
           "<set> ",
           "<if test='id!=null'>id = #{id},</if> ",
           "<if test='platName!=null'>plat_name = #{platName},</if> ",
           "<if test='appId!=null'>app_id = #{appId},</if> ",
           "<if test='appSecrect!=null'>app_secrect = #{appSecrect},</if> ",
           "<if test='signFrom!=null'>sign_from = #{signFrom},</if> ",
           "<if test='description!=null'>description = #{description},</if> ",
           "<if test='deletedAt!=null'>deleted_at = #{deletedAt},</if> ",
           "</set> ",
           "WHERE id = #{id} ",
           "</script>", 
   })
   Integer update(PlatformInfoDO update);

   @Select(value = {
           "<script> ",
           "SELECT * FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "LIMIT 0,1 ",
           "</script>", 
   })
   PlatformInfoDO selectOne(PlatformInfoDO query);

   @Select({"SELECT * FROM platform_info WHERE id = #{id} AND deleted_at = 0"})
   PlatformInfoDO selectOneById(Integer id);

   @Select(value = {
           "<script> ",
           "SELECT * FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "</script>", 
   })
   List<PlatformInfoDO> selectMany(PlatformInfoDO query);

   @Delete(value = {
           "<script> ",
           "DELETE FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "</script>", 
   })
   Integer delete(PlatformInfoDO delete);


@Select(value = {
           "<script> ",
           "SELECT * FROM live_verify ",
           "WHERE deleted_at = 0 ",
           "<if test='liveVerify.id!=null'>AND id = #{liveVerify.id}</if> ",
           "<if test='liveVerify.fkId!=null'>AND fk_id = #{liveVerify.fkId}</if> ",
           "<if test='liveVerify.subFkId!=null'>AND sub_fk_id = #{liveVerify.subFkId}</if> ",
           "<if test='liveVerify.systemType!=null'>AND system_type = #{liveVerify.systemType}</if> ",
           "<if test='liveVerify.username!=null'>AND username = #{liveVerify.username}</if> ",
           "<if test='liveVerify.idNoType!=null'>AND idNo_type = #{liveVerify.idNoType}</if> ",
           "<if test='liveVerify.idNoEncrypt!=null'>AND idNo_encrypt = #{liveVerify.idNoEncrypt}</if> ",
           "<if test='liveVerify.orderNo!=null'>AND order_no = #{liveVerify.orderNo}</if> ",
           "<if test='liveVerify.verifyStatus!=null'>AND verify_status = #{liveVerify.verifyStatus}</if> ",
           "<if test='liveVerify.verifyFrom!=null'>AND verify_from = #{liveVerify.verifyFrom}</if> ",
           "<if test='liveVerify.verifyImage!=null'>AND verify_image = #{liveVerify.verifyImage}</if> ",
           "AND verify_status IN ",
           "<foreach collection='statusList' item='item' open='(' close=')' separator=',' > ",
           "#{item} ",
           "</foreach> ",
           "ORDER BY ID DESC LIMIT 0,1 ",
           "</script> "
   })
   LiveVerifyDO selectLiveVerifyByMultiResult(@Param("liveVerify") LiveVerifyDO liveVerifyDO, @Param("statusList") List<Integer> list);
   
}

 "<foreach collection='dataRecordList' open='(' close=')' separator=',' index='index' item='item' >",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值