Mybatis动态接收参数(可传可不传的参数)

mybaitis接收前端传过来的值有时是不固定的,某些参数是必传的某些参数可能有时候不会传,为了解决这个问题,我们让前端根据需要传参,也就是如果前端需要这个参数,那么就传这个参数,如果不需要就不需要传这个参数了

代码里的需求是storeName是非必传的,并且根据字段还要模糊查询

后端代码逻辑是这样的:

<select id="selectStoreProductById" resultType="co.yixiang.module.entry.StoreProduct">
        SELECT DISTINCT * FROM yx_store_product ysp WHERE is_del=0 AND ysp.shop_id='000' AND ysp.is_show=#{isShow}
        <if test="storeName != null and '' != storeName" >AND ysp.store_name like concat('%',#{storeName}, '%')</if>
        <if test="isGood != null and '' != isGood" >AND ysp.is_good=#{isGood}</if>
        limit #{page},#{size}
    </select>

第一句sql是一个总体条件,storeName是一个参数,如果为空的话就不会拼接这条语句,如果右值就会模糊查询。

特别注意的是:

有时候可能会出现参数穿错的问题  就是打印的Sql 语句显示传给A的参数居然传到了B参数中,(强烈建议传参就传一个对象)这种问题大多是controller到service到Dao的过程中,传参的顺序不一致导致的,这种顺序不一致的问题就会把参数传错。

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis是一个开源的持久层框架,可以很方便地与各种数据库进行交互。动态添加参数MyBatis中非常常见的一种需求,可以根据不同的条件动态添加参数到SQL语句中,提高SQL的灵活性和可复用性。下面以一个简单的查询示例来说明如何动态添加参数。 假设有一个用户表,我们需要根据不同的查询条件查询用户信息。首先,我们可以在Mapper接口中定义一个方法,如下所示: public List<User> searchUser(@Param("name") String name, @Param("age") Integer age); 接下来,在Mapper的XML配置文件中编写SQL语句,如下所示: <select id="searchUser" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </select> 在这个SQL语句中,我们使用了动态SQL的if语句,根据参数的值判断是否添加相应的查询条件。参数name和age分别对应Mapper接口中的@Param注解,保证了参数的正确传递和绑定。 当我们调用searchUser方法时,可以根据需要传递不同的参数。例如,如果只需要根据名称查询用户,可以这样调用: List<User> userList = userMapper.searchUser("张三", null); 在这个例子中,我们只传递了name参数,age参数为null,所以只查询到了名称为"张三"的用户信息。 通过动态添加参数,我们可以根据不同的条件组合自由地构建SQL语句,使查询更加灵活和高效。这种灵活性在真实的项目开发中非常有用,可以满足各种复杂的查询需求。 ### 回答2: MyBatis是一个优秀的持久层框架,提供了灵活的参数传递动态SQL语句的编写方式,可以很方便地实现动态添加参数。 在MyBatis中,可以使用动态SQL标签来实现动态添加参数。常用的动态SQL标签包括<if>、<choose>、<when>和<otherwise>等。 首先,在定义MyBatis的Mapper接口方法时,需要使用@Param注解来声明参数名称。例如: ``` void updateUserInfo(@Param("name") String name, @Param("age") Integer age); ``` 在XML映射文件中,可以使用动态SQL标签来实现根据不同情况动态添加参数。例如: ``` <update id="updateUserInfo"> update user_info <set> <if test="name != null"> name = #{name}, </if> <if test="age != null"> age = #{age}, </if> </set> where id = #{id} </update> ``` 上述代码中,根据入的参数动态判断是否添加对应的SQL语句片段。如果name参数不为空,则添加name字段更新语句;如果age参数不为空,则添加age字段更新语句。 在使用该方法时,可以根据需要入相应的参数,只添加需要更新的字段。例如: ``` mapper.updateUserInfo(null, 18); // 只更新age字段 ``` 总结来说,MyBatis通过动态SQL标签的使用,可以很方便地实现动态添加参数的功能。开发者可以根据具体需求,灵活地选择添加哪些参数,减少重复代码的编写。 ### 回答3: Mybatis是一个开源的持久层框架,它可以与Java应用程序无缝集成。在使用Mybatis进行数据库操作时,有时需要动态地添加参数来满足不同的查询条件。下面是如何动态添加参数的简单示例。 首先,可以使用动态SQL语句来实现参数动态添加。Mybatis提供了一些动态SQL语句的标签,如if、choose、when、otherwise等。可以根据需要使用这些标签来判断条件并添加参数。 例如,假设有一个查询用户信息的方法,可以根据入的条件动态地添加参数。可以定义一个动态SQL语句,根据入的条件判断是否添加相应的参数。 ``` <select id="getUserList" parameterType="map" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="username != null"> AND username = #{username} </if> <if test="age != null and age > 0"> AND age = #{age} </if> </select> ``` 在上述示例中,通过if标签判断是否入了username和age参数,如果入了这些参数,则在SQL语句中添加相应的条件。 使用动态SQL语句后,调用该方法时可以入不同的参数动态地生成SQL语句。例如: ``` Map<String, Object> params = new HashMap<>(); params.put("username", "张三"); List<User> userList = sqlSession.selectList("getUserList", params); ``` 以上示例中,根据入的params参数生成相应的SQL语句,根据条件查询满足条件的用户信息。 总而言之,Mybatis提供了动态SQL语句的支持,可以根据需要动态地添加参数来构建灵活的SQL语句。可以使用if、choose、when、otherwise等标签来判断条件并添加参数。通过入不同的参数可以生成不同的SQL语句,以满足不同的查询需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值