spring 模糊查询,查询


https://www.5ceo.cn 更多技术博文点击查看




<select id="find" parameterType="com.sfbm.carmall.persistent.model.brand.Brand"

resultType="map">
SELECT
t.brand_id brandId,
t.brand_name brandName,
t.description
description,
t.url url
FROM
t_brand t where t.delFlag=0
<if test="brand_name!=null and  ''!=brand_name ">
and t.brand_name like '%${brand_name}%'
</if>
</select>
resultType

为map集合,参数类型可以为,string,entity,以及map 

1.如果参数类型为string  那么 brand_name like '%${value}%'此处必须为value,如果为其他属性将报no Getter的错误

2.如果是对象entity,则parameterType必须是“package.class”的格式,并且 "%${}%"中的属性必须是entity中的属性。

3.如果参数为map,则parameterType是Java.util.Map,并且"%${}%"中的属性必须是map中的key。

*如果jsp页面用对象传值到control,则jsp页面应该这样写:

<input name="brand_name"> brand_name必须是entity中的属性。并且不用entity.brand_name这样的方式

*control中必须用@ModelAttribute绑定该对象

@ModelAttribute("entity") Entity entity

模糊查询时,%${brand_name}% {}前面不能是#,必须是${}

或者Oracle 用concat(concat('%',#{}),'%')mysql:concat('%',#{},‘%’)

### 如何在 Spring Cloud 中实现模糊查询 #### 使用 JPA 实现模糊查询Spring Data JPA 中,可以通过定义接口方法来轻松实现模糊查询功能。假设有一个 `User` 表,并希望根据用户名的部分字符串匹配来进行查询。 ```java public interface UserRepository extends JpaRepository<User, Long> { List<User> findByNameContaining(String name); } ``` 上述代码片段展示了如何创建一个自定义的查询方法[^1]。此方法名为 `findByNameContaining`,它接受一个参数并返回所有名字包含该子串的用户列表。 对于更复杂的条件组合或者动态构建查询语句的情况,则推荐使用 Specifications 或者 QueryDSL 来完成更加灵活多变的需求处理[^2]。 #### 利用 MyBatis Plus 进行模糊查询 如果项目采用的是 MyBatis 框架,在 MyBatis Plus 的帮助下也可以很方便地达成同样的目的: ```xml <select id="selectUsersLikeName" resultType="com.example.demo.entity.User"> SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%') </select> ``` 这段 XML 配置说明了怎样编写 SQL 查询以支持按名称部分匹配的方式检索记录[^3]。注意这里使用了 `%` 符号作为通配符包围输入变量 `${name}` ,从而实现了前后缀不限定的效果。 另外一种做法是在 Mapper 接口中声明相应的方法签名,并配合注解形式指定具体的 SQL 语法: ```java @Select("SELECT * FROM user WHERE name LIKE concat('%',#{name},'%')") List<User> selectUsersLikeName(@Param("name") String name); ``` 以上两种方式均能有效地满足模糊搜索的要求,具体选择取决于团队技术栈和个人偏好等因素影响下的决策过程[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值