【Spring】— 动态SQL :<set>元素

<set>元素

在Hibernate中,如果想要更新某一个对象,就需要发送所有的字段给持久化对象,然而实际应用中会存在只需要更新某一个或几个字段。为了让程序只更新需要更新的字段,MyBatis提供了<set>元素来完成这一工作。<set>元素主要用于更新操作,主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除。

【示例】以更新操作为例,使用<set>元素对映射文件中更新用户信息的SQL语句进行修改的代码如下所示。

 <!--<set>元素-->
    <update id="updateUser" parameterType="com.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个示例代码,演示如何在Spring Boot项目中使用`PageHelper`实现在SQL层面的分页: 首先,需要在`pom.xml`中添加`pagehelper`依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;1.3.0&lt;/version&gt; &lt;/dependency&gt; ``` 然后,在`application.properties`中添加相应的配置: ```properties # 分页插件配置 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ``` 接下来,定义一个`Page`类,用于封装分页参数和查询结果: ```java public class Page&lt;T&gt; { private List&lt;T&gt; content; // 数据列表 private long total; // 总记录数 private int pageNum; // 当前页码 private int pageSize; // 每页记录数 private String sort; // 排序字段 private String order; // 排序方式 // getter和setter方法 } ``` 然后,定义一个`PageHelperUtil`工具类,用于调用`PageHelper`进行分页查询: ```java public class PageHelperUtil { public static &lt;T&gt; Page&lt;T&gt; startPage(PageSortInterface pageSort, Supplier&lt;List&lt;T&gt;&gt; supplier) { PageHelper.startPage(pageSort.getPageNum(), pageSort.getPageSize(), pageSort.getSort() + " " + pageSort.getOrder()); List&lt;T&gt; list = supplier.get(); PageInfo&lt;T&gt; pageInfo = new PageInfo&lt;&gt;(list); Page&lt;T&gt; page = new Page&lt;&gt;(); page.setContent(list); page.setTotal(pageInfo.getTotal()); page.setPageNum(pageInfo.getPageNum()); page.setPageSize(pageInfo.getPageSize()); page.setSort(pageSort.getSort()); page.setOrder(pageSort.getOrder()); return page; } } ``` 在`startPage`方法中,我们调用`PageHelper.startPage`方法,指定当前页码、每页记录数和排序方式,并使用`Supplier`接口作为入参,接收一个查询结果的lambda表达式。然后,将查询结果封装为`Page`对象,包含数据列表、总记录数、当前页码、每页记录数、排序字段和排序方式。 最后,在`UserMapper`接口中定义一个`selectByRoleAndPage`方法,接收一个`PageSortInterface`类型的参数,并返回一个`List&lt;User&gt;`类型的结果: ```java public interface UserMapper extends MyBaseMapper&lt;User&gt; { @SelectProvider(type = MySelectProvider.class, method = "dynamicSQL") List&lt;User&gt; selectByRoleAndPage(PageSortInterface pageSort); } ``` 在`selectByRoleAndPage`方法中,我们调用`MySelectProvider.dynamicSQL`方法生成查询语句,并将`PageSortInterface`类型的参数作为入参传递给`PageHelperUtil.startPage`方法,实现分页查询。最终返回一个`List&lt;User&gt;`类型的结果。 使用示例如下: ```java @RequestMapping("/users") public Page&lt;User&gt; getUsers(@RequestParam int role, @RequestParam int pageNum, @RequestParam int pageSize, @RequestParam String sort, @RequestParam String order) { PageSortInterface pageSort = new PageSortImpl(pageNum, pageSize, sort, order); return PageHelperUtil.startPage(pageSort, () -&gt; userMapper.selectByRoleAndPage(pageSort)); } ``` 在`getUsers`方法中,我们接收请求参数,创建一个`PageSortImpl`对象,实现`PageSortInterface`接口。然后,调用`PageHelperUtil.startPage`方法,传入`PageSortInterface`类型的参数和一个lambda表达式,获取分页查询结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衍生星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值