SSM全注解方式使用PageHelper实现分页查询(日志为例)

Dept 1. 添加依赖

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

<version>5.1.2</version>

</dependency>

Dept2: 配置环境

package com.db.common.config;

/**

 * 注解配置应用说明:

 * @ComponentScan 修饰配置类,用于定义要对哪些保重类型进行扫描,

 * 属性value指定具体要扫描的包,属性excludeFilters表示对扫描包中的哪些类不进行加载

 *

 * 其中Controller.class,ControllerAdvice.class

 * 为web请求层spring中的常用注解

 */

@ComponentScan(//@Component,@Controller,@Service,@Configuration...

value="com.db",

//要排除加载的类(例如使用controller注解修饰的类不进行加载)

excludeFilters={

@Filter(type=FilterType.ANNOTATION,//约束classes属性中的内容

classes={Controller.class,

ControllerAdvice.class})})//<context:component-scan base-package="com.jt"/>



public class AppRootConfig {//取代spring-configs.xml

}



package com.db.common.config;

@Configuration

@MapperScan(basePackages="com.db.**.dao")

/**等上

 * @Bean

public MapperScannerConfigurer getScanner(){

MapperScannerConfigurer scanner=new MapperScannerConfigurer();

scanner.setBasePackage("com.db.**.dao");

return scanner;

} */

public class AppMyBatisConfig {

/**配置PageInterceptor插件*/

@Bean

public PageInterceptor getPageInterceptor(){

PageInterceptor pageIntercptor=new PageInterceptor();

Properties properties=new Properties();

properties.setProperty("value", "true");

pageIntercptor.setProperties(properties);

return pageIntercptor;

}

@Bean("sqlSessionFactory")

public SqlSessionFactoryBean newSqlSessionFactoryBean(

@Autowired DataSource dataSource) throws IOException{

SqlSessionFactoryBean fBean=new SqlSessionFactoryBean();

fBean.setDataSource(dataSource);

Resource[] mapperLocations=

new PathMatchingResourcePatternResolver()

.getResources("classpath:mapper/sys/*.xml");

fBean.setMapperLocations(mapperLocations);

Interceptor[] plugins={getPageInterceptor()};

fBean.setPlugins(plugins);

return fBean;

}

}


package com.db.common.config;

@PropertySource(value="classpath:configs.properties")

@Configuration

public class AppDateSourceConfig {

 /**配置数据源对象:druid*/

  @Bean(value="dataSource",initMethod="init",destroyMethod="close")

  public DataSource newDruidDataSource(Environment env){

DruidDataSource ds=new DruidDataSource();

ds.setDriverClassName(env.getProperty("jdbcDriver"));

ds.setUrl(env.getProperty("jdbcUrl"));

ds.setUsername(env.getProperty("jdbcUser"));

ds.setPassword(env.getProperty("jdbcPassword"));

return ds;

  }

}


package com.db.common.config;

/**

 * 在此配置类中事项spring mvc资源对象的整合

 * @author 

 */

@ComponentScan(value="com.db",useDefaultFilters=false,//取消默认过滤器

includeFilters={//只加载有指定注解修饰的类

@Filter(type=FilterType.ANNOTATION,classes=

{Controller.class,ControllerAdvice.class})})

@EnableWebMvc//启用mvc默认配置(内置很多类型转换器)

public class AppMvcConfig extends WebMvcConfigurerAdapter {

//视图解析器

@Override

public void configureViewResolvers(ViewResolverRegistry registry) {

registry.jsp("/WEB-INF/pages/",".html");

}

}


package com.db.common.config;

/***

 * tomcat 启动时会加载此类,然后执行相关方法

 * 完成初始化动作(此类中要完成原web.xml中要

 * 执行的一些操作)

 * @author ta

 */

public class AppWebInitializer extends 

    AbstractAnnotationConfigDispatcherServletInitializer {

/**此类对象在执行时首先会执行onStartup方法完成一些初始化操作

并且会注册spring mvc前端控制器*/

    @Override

public void onStartup(ServletContext servletContext) throws ServletException {

System.out.println("onStartup()");

//super.onStartup(servletContext);

registerContextLoaderListener(servletContext);

//registerFilter(servletContext);

registerDispatcherServlet(servletContext);

}


//官方建议在此方法中加载model(service,respository)

@Override

protected Class<?>[] getRootConfigClasses() {

System.out.println("getRootConfigClasses()");

//return new Class[]{AppDataSourceConfig.class,AppMyBatisConfig.class};

return new Class[]{AppRootConfig.class};

}

//官方建议在此方法中加载View,Controller,...

@Override

protected Class<?>[] getServletConfigClasses() {

System.out.println("getServletConfigClasses()");

return new Class[]{AppMvcConfig.class};

}

//官方建议在此方法中定义请求映射

@Override

protected String[] getServletMappings() {

System.out.println("getServletMappings()");

//由前端控制器处理所有以.do结尾的请求

return new String[]{"*.do"};

}

}

Configs.properties

jdbcDriver=com.mysql.jdbc.Driver

jdbcUrl=jdbc:mysql:///jtsys

jdbcUser=root

jdbcPassword=root

Dept3: 代码实现

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.db.sys.dao.SysLogDao">

<select id="findPageObjects"

            resultType="com.db.sys.entity.SysLog">

         select *

         from sys_Logs

         order by createdTime desc

         <include refid="queryWhereId"/>



 <!-- 借助此元素对共性数据进行提取 -->

    <sql id="queryWhereId">

          <where>

            <if test="username!=null and username!=''">

               username like concat("%",#{username},"%")

            </if>

          </where>

</sql>

</mapper>
package com.db.sys.dao;

public interface SysLogDao {



List<SysLog> findPageObjects(

@Param("username")String username);

}
package com.db.sys.service;

public interface SysLogService {

 /**

     * 通过此方法实现分页查询操作

     * @param name 基于条件查询时的参数名

     * @param pageCurrent 当前的页码值

     * @return 当前页记录+分页信息

     */

 PageInfo<SysLog> findPageObjects(

 String username,

 Integer pageNum);

}
package com.db.sys.service.impl;

@Service

public class SysLogServiceImpl implements SysLogService{

@Autowired

private SysLogDao sysLogDao;



@Override

public PageInfo<SysLog> findPageObjects(

String username,

Integer pageNum){

//1.对方法参数进行校验

if(pageNum==null||pageNum<1)

throw new IllegalArgumentException("页码值不正确");

int pageSize=3;//页面大小

PageHelper.startPage(pageNum, pageSize);

List<SysLog> list=

sysLogDao.findPageObjects(username);

//对查询结果进行封装并返回。

PageInfo<SysLog> pageInfo=new PageInfo<>(list);

return pageInfo;

}

}
package com.db.sys.controller;

@RequestMapping("/")

@Controller

public class PageController {

@RequestMapping("doIndexUI")

public String doIndexUI(){

System.out.println("----------");

return "starter";

}

 @RequestMapping("doPageUI")

  public String doPageUI(){

  //try{Thread.sleep(3000);}catch(Exception e){}

  return "common/page";//page.html

  }

}
package com.db.sys.controller;

@Controller

@RequestMapping("/log/")

public class SysLogController {

@Autowired SysLogService sysLogService;



@RequestMapping("doLogListUI")

public String doLogListUI(){

return "sys/log_list";

}



@RequestMapping("doFindPageObjects")

@ResponseBody

 public JsonResult doFindPageObjects(   

  String username,

  /*@RequestParam(value="pageNum",required=false)*/

  Integer pageNum){

  PageInfo<SysLog> po=

  sysLogService.findPageObjects(

  username,pageNum);

  return new JsonResult(po);

}

}


版权声明:本文为weixin_43589837原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。