springboot中使用pageHelper插件和使用动态的sql

今天第一次在springboot中使用了pageHellper插件,怕下次要使用的时候忘记了,以此来进行总结。

首先,使用pom.xml加入

<!--分页插件依赖-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.0</version>
</dependency>

接着,创建一个provider包,并创建VideoProvider类,主要用来

video构建动态sql语句

内容如下:

public class VideoProvider {
    /**
     * 更新video动态语句
     * @param video
     * @return
     */
    public String updateVideo(final Video video){
       return new SQL(){{
           UPDATE("video");
           //条件写法
           if(video.getTitle()!=null){
               SET("title=#{title}");//这里可以用#,但是会存在注入
           }
           if(video.getSummary()!=null){
               SET("summary=#{summary}");//这里可以用#,但是会存在注入
           }
           if(video.getCoverImg()!=null){
               SET("cover_img=#{coverImg}");//这里可以用#,但是会存在注入
           }
           if(video.getViewNum()!=null){
               SET("view_num=#{viewNum}");//这里可以用#,但是会存在注入
           }
           if(video.getPrice()!=null){
               SET("price=#{price}");//这里可以用#,但是会存在注入
           }
           if(video.getOnline()!=null){
               SET("online=#{online}");//这里可以用#,但是会存在注入
           }
           if(video.getPoint()!=null){
               SET("point=#{point}");//这里可以用#,但是会存在注入
           }


           WHERE("id=#{id}");
       }}.toString();
    }
}

既然使用了动态的更新语句,那么在mapper层那里的话就要

@UpdateProvider(type = VideoProvider.class,method = "updateVideo")
int  update(Video video);

使用了@UpdateProvider注解 

这个是题外话,

第二步的是增加配置文件:

在config包下创建一个mybatisconfig类

package cc.net.xdvideo.config;

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.awt.print.Pageable;
import java.util.Properties;

/**
 * mybatis分页插件配置
 */
@Configuration
public class MyBatisConfig {
    /**
     * @Beam相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
     * @return
     * 这个文件的意思的:在springboot的启动类(Application.java)里面注入配置
     */
     @Bean
    public PageHelper pageHelper(){
    PageHelper pageHelper =new PageHelper();
         Properties  properties=new Properties();
         //设置为true是时,会将rowbounds第一个参数offset当成pageNum页码使用
         properties.setProperty("offsetAsPageNum","true");
         //设置为true时,使用rowbounds分页会进行count查询
         properties.setProperty("rowBoundsWithCount","true");
         properties.setProperty("reasonable","true");
         pageHelper.setProperties(properties);
         return  pageHelper;


}


}
使用@Bean注解
这个文件的意思的:在springboot的启动类(Application.java)里面注入配置
package cc.net.xdvideo.config;

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.awt.print.Pageable;
import java.util.Properties;

/**
 * mybatis分页插件配置
 */
@Configuration
public class MyBatisConfig {
    /**
     * @Beam相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
     * @return
     * 这个文件的意思的:在springboot的启动类(Application.java)里面注入配置
     */
     @Bean
    public PageHelper pageHelper(){
    PageHelper pageHelper =new PageHelper();
         Properties  properties=new Properties();
         //设置为true是时,会将rowbounds第一个参数offset当成pageNum页码使用
         properties.setProperty("offsetAsPageNum","true");
         //设置为true时,使用rowbounds分页会进行count查询
         properties.setProperty("rowBoundsWithCount","true");
         properties.setProperty("reasonable","true");
         pageHelper.setProperties(properties);
         return  pageHelper;


}


}

接下来的就是控制器的调用了:

@PutMapping("update_by_id")
public Object update(@RequestBody Video video)
{

    return videoService.update(video);
}

猜你喜欢

转载自blog.csdn.net/weixin_40593587/article/details/81360398