pageinfo分页不生效 sql语句 -回复

合集下载

SpringBoot+Mybatisplus实现多数据源整合的实践

SpringBoot+Mybatisplus实现多数据源整合的实践

SpringBoot+Mybatisplus实现多数据源整合的实践SpringBoot 版本为1.5.10.RELEASE,Mybatis plus 版本为2.1.8。

第⼀步:填写配置信息:spring:aop:proxy-target-class: trueauto: truedatasource:druid:# 数据库 1db1:url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=trueusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.DriverinitialSize: 5minIdle: 5maxActive: 20# 数据库 2db2:url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=trueusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.DriverinitialSize: 5minIdle: 5maxActive: 20第⼆步:数据源配置:@Configuration@MapperScan({"com.warm.system.mapper*"})public class MybatisPlusConfig {/*** mybatis-plus分页插件<br>* ⽂档:<br>*/@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();//paginationInterceptor.setLocalPage(true);// 开启 PageHelper 的⽀持return paginationInterceptor;}/*** mybatis-plus SQL执⾏效率插件【⽣产环境可以关闭】*/@Beanpublic PerformanceInterceptor performanceInterceptor() {return new PerformanceInterceptor();}@Bean(name = "db1")@ConfigurationProperties(prefix = "spring.datasource.druid.db1" )public DataSource db1 () {return DruidDataSourceBuilder.create().build();}@Bean(name = "db2")@ConfigurationProperties(prefix = "spring.datasource.druid.db2" )public DataSource db2 () {return DruidDataSourceBuilder.create().build();}/*** 动态数据源配置* @return*/@Bean@Primarypublic DataSource multipleDataSource (@Qualifier("db1") DataSource db1,@Qualifier("db2") DataSource db2 ) {DynamicDataSource dynamicDataSource = new DynamicDataSource();Map< Object, Object > targetDataSources = new HashMap<>();targetDataSources.put(DBTypeEnum.db1.getValue(), db1 );targetDataSources.put(DBTypeEnum.db2.getValue(), db2);dynamicDataSource.setTargetDataSources(targetDataSources);dynamicDataSource.setDefaultTargetDataSource(db1);return dynamicDataSource;}@Bean("sqlSessionFactory")public SqlSessionFactory sqlSessionFactory() throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();sqlSessionFactory.setDataSource(multipleDataSource(db1(),db2()));//sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*/*Mapper.xml"));MybatisConfiguration configuration = new MybatisConfiguration();//configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);configuration.setJdbcTypeForNull(JdbcType.NULL);configuration.setMapUnderscoreToCamelCase(true);configuration.setCacheEnabled(false);sqlSessionFactory.setConfiguration(configuration);sqlSessionFactory.setPlugins(new Interceptor[]{ //PerformanceInterceptor(),OptimisticLockerInterceptor()paginationInterceptor() //添加分页功能});sqlSessionFactory.setGlobalConfig(globalConfiguration());return sqlSessionFactory.getObject();}@Beanpublic GlobalConfiguration globalConfiguration() {GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());conf.setLogicDeleteValue("-1");conf.setLogicNotDeleteValue("1");conf.setIdType(0);conf.setMetaObjectHandler(new MyMetaObjectHandler());conf.setDbColumnUnderline(true);conf.setRefresh(true);return conf;}}第三步:利⽤AOP进⾏数据源的动态切换:@Component@Aspect@Order(-100) //这是为了保证AOP在事务注解之前⽣效,Order的值越⼩,优先级越⾼@Slf4jpublic class DataSourceSwitchAspect {@Pointcut("execution(* com.warm.system.service.db1..*.*(..))")private void db1Aspect() {}@Pointcut("execution(* com.warm.system.service.db2..*.*(..))")private void db2Aspect() {}@Before( "db1Aspect()" )public void db1() {("切换到db1 数据源...");DbContextHolder.setDbType(DBTypeEnum.db1);}@Before("db2Aspect()" )public void db2 () {("切换到db2 数据源...");DbContextHolder.setDbType(DBTypeEnum.db2);}}public class DbContextHolder {private static final ThreadLocal contextHolder = new ThreadLocal<>();/*** 设置数据源* @param dbTypeEnum*/public static void setDbType(DBTypeEnum dbTypeEnum) {contextHolder.set(dbTypeEnum.getValue());}/*** 取得当前数据源* @return*/public static String getDbType() {return (String) contextHolder.get();}/*** 清除上下⽂数据*/public static void clearDbType() {contextHolder.remove();}}public enum DBTypeEnum {db1("db1"), db2("db2");private String value;DBTypeEnum(String value) {this.value = value;}public String getValue() {return value;}}public class DynamicDataSource extends AbstractRoutingDataSource {/*** 取得当前使⽤哪个数据源* @return*/@Overrideprotected Object determineCurrentLookupKey() {return DbContextHolder.getDbType();}}OK!写个单元测试来验证⼀下:@SpringBootTest@RunWith(SpringJUnit4ClassRunner.class)public class DataTest {@Autowiredprivate UserService userService;@Autowiredprivate OrderService orderService;@Testpublic void test() {userService.getUserList().stream().forEach(item -> System.out.println(item)); orderService.getOrderList().stream().forEach(item -> System.out.println(item)); }}如图所⽰,证明数据源能动态切换了。

《网络编程技术》第2次作业及答案

《网络编程技术》第2次作业及答案

《网络编程技术》第2次作业一、填空题1、ADO 的3个核心对象是____ Connection ______、____ Command ____、______ RecordSet ___。

2、要创建ODBC 数据源,打开“控制面板”中的________管理工具_______,在__数据源(ODBC)__项目上双击来一步步实现。

3、为了建立与数据库连接,必须先调用连接对象的_____OPEN___方法,才可以继续进行各种操作。

4、____CLOSE______方法的作用主要是用以切断Connection 对象与数据库之间的链接通道。

5、标示为___BOF____和___EOF____的特殊指针位置,分别代表记录集开始于结束的位置,这两个位置只是一个空值。

6、当指针已经移动至首记录时,使用____MoveFirst___可以达到记录集开始的位置,反之引用___MoveLast____,可以将指标移到记录集结束的位置。

7、在使用INSERT 添加数据时,未设置的字段,添加数据时其默认值为___NULL_____。

8、Recordset 对象有两种方法可对记录进行更新,一种是用__SQL Update 语句___修改记录;另一种是用Recordset 对象的___UPDA TE__方法修改记录。

9、添加数据记录有两种方法,一种是使用______SQL Insert INTO_____语句;另一种是使用RecordSet对象的______AddNew_______方法。

10、如果用户在__Session.TimeOut___规定的时间内没有请求或刷新应用程序中的任何页,Session对象就会自动终止。

11、对于一些脚本执行需时过长的特定页面,也可使用Server 对象的_ScriptTimeOut__属性为其设定一个限制时间。

12、在ASP 中,用户可以利用其他功能完整的程序语言,运用Server 对象的__CreateObject___方法,在网页中创建具备所需功能的程序对象。

DevExpres XtraReports控件使用说明

DevExpres XtraReports控件使用说明

XtraReports 使用说明2015-07-0104:381.安装Dxperience最新版本是Dxperience v8.33。

安装完组件库之后,Dxperience 中的控件会自动嵌入到 vs系统中。

在创建报表等项目是并不需要添加引用,系统会自动为你添加需要的引用。

2.创建一个简单报表我们以一个最简单的hello word例子开始。

首先打开vs2005,新建一个项目,点击项目右键添加一个新项,选择XtraReport Class v8.3(选择XtraReport Wizard v8.3通过向导创建),点击确定,弹出提示框,选择“是”,则新的报表文件将添加进入App_Code文件夹内,如果选择“否”,则直接添加进入项目中,会出现不能显示设计器的情况,所以建议选择“是”。

这样一个新的报表文件添加进来了,但是一个报表文件是不能直接显示的,是要嵌入到页面中才能显示给客户,将一个报表文件加入到页面中其实很简单,只需要加入几句话就可以了,首先添加DevExpress.Web引用,然后新建一个页面,在页面的前台添加下面的引用:<%@Register Assembly="DevExpress.XtraReports.v8.3.Web, Version=8.3.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"Namespace="DevExpress.XtraReports.Web"TagPrefix="dxxr"%>在form标签中加入<dxxr:ReportViewer ID="ReportViewer"runat="server"></dxxr:ReportViewer>可以编辑报表显示的边框,尺寸等等。

DevExpress XtraReports 详细使用说明

DevExpress XtraReports 详细使用说明

XtraReports 使用说明一安装Dxperience最新版本是Dxperience v8.33。

安装完组件库之后,Dxperience中的控件会自动嵌入到vs系统中。

在创建报表等项目是并不需要添加引用,系统会自动为你添加需要的引用。

二创建一个简单报表我们以一个最简单的hello word例子开始。

首先打开vs2005,新建一个项目,点击项目右键添加一个新项,选择XtraReport Class v8.3(选择XtraReport Wizard v8.3通过向导创建),点击确定,弹出提示框,选择“是”,则新的报表文件将添加进入App_Code文件夹内,如果选择“否”,则直接添加进入项目中,会出现不能显示设计器的情况,所以建议选择“是”。

这样一个新的报表文件添加进来了,但是一个报表文件是不能直接显示的,是要嵌入到页面中才能显示给客户,将一个报表文件加入到页面中其实很简单,只需要加入几句话就可以了,首先添加DevExpress.Web引用,然后新建一个页面,在页面的前台添加下面的引用:<%@Register Assembly="DevExpress.XtraReports.v8.3.Web, Version=8.3.3.0,Culture=neutral, PublicKeyToken=b88d1754d700e49a"Namespace="DevExpress.XtraReports.Web"TagPrefix="dxxr" %>在form标签中加入<dxxr:ReportViewer ID="ReportViewer"runat="server"></dxxr:ReportViewer>可以编辑报表显示的边框,尺寸等等。

在后台加入下面的程序:protected void Page_Load(object sender, EventArgs e){ReportViewer.Report = new XtraReport1();}这样报表就可以显示出来了,但是现在我们什么也看不到,因为报表中还没有添加任何内容。

解决Mybatis-Plus操作分页后数据失效问题

解决Mybatis-Plus操作分页后数据失效问题

解决Mybatis-Plus操作分页后数据失效问题业务场景我们知道在使⽤PageHelper分页插件时,会对执⾏PageHelper.startPage(pageNum, pageSize);⽅法后的第⼀条查询语句进⾏分页操作。

在开发中总会遇到这样的业务情景,在进⾏分页查询后,需要对获得的列表数据包装成另⼀种类型,此时需要对新类型的列表进⾏分页,然⽽由于PageInfo<T>因为泛型的原因,导致处理后的列表不能加⼊到该类中。

如,我在数据库分页后查询到的类为PageInfo<User>,此时改类中的list属性为User,在当前的业务场景下,我需要将User类型替换为UserVo类型。

当我们对list属性进⾏操作时,会同时导致PageInfo类中的其他属性发⽣改变,如total等。

解决⽅法//从数据库获得的Users分页列表//当我们打印users时,会发现打印出来的数据除了列表数据还有分页属性List<User> users = this.list();//操作users获得的需要的列表List<UserVo> userVos = this.list2(users);//创建User的info类,此时page中的属性已⽣成PageInfo<User> userPage = new PageInfo<>(users);//创建UserVo的info类PageInfo<UserVo> userVoPage= new PageInfo<>(userVos );//将userPage中除看list外的其他属性复制到userVoPage中PageInfoUtil pageInfoUtil = new PageInfoUtil();pageInfo = pageInfoUtil.getPageVo(userPage ,userVoPage);pageInfoUtilpublic class PageInfoUtil {public PageInfo getPageVo(PageInfo pageInfoPo,PageInfo pageInfoVo){pageInfoVo.setTotal(pageInfoPo.getTotal());pageInfoVo.setEndRow(pageInfoPo.getEndRow());pageInfoVo.setHasNextPage(pageInfoPo.isHasNextPage());pageInfoVo.setHasPreviousPage(pageInfoPo.isHasPreviousPage());pageInfoVo.setIsFirstPage(pageInfoPo.isIsFirstPage());pageInfoVo.setIsLastPage(pageInfoPo.isIsLastPage());pageInfoVo.setNavigateFirstPage(pageInfoPo.getNavigateFirstPage());pageInfoVo.setNavigateLastPage(pageInfoPo.getNavigateLastPage());pageInfoVo.setNavigatePages(pageInfoPo.getNavigatePages());pageInfoVo.setNavigatepageNums(pageInfoPo.getNavigatepageNums());pageInfoVo.setNextPage(pageInfoPo.getNextPage());pageInfoVo.setPageNum(pageInfoPo.getPageNum());pageInfoVo.setPages(pageInfoPo.getPages());pageInfoVo.setPageSize(pageInfoPo.getPageSize());pageInfoVo.setPrePage(pageInfoPo.getPrePage());pageInfoVo.setSize(pageInfoPo.getSize());pageInfoVo.setStartRow(pageInfoPo.getStartRow());pageInfoVo.setFirstPage(pageInfoPo.getFirstPage());pageInfoVo.setLastPage(pageInfoPo.getLastPage());return pageInfoVo;}}End想使⽤秀⼀点的⽅法,结果能⼒有限,没有成功,只能使⽤这种笨⽅法,如果有更好的⽅法,欢迎各位指导。

用友NC5.7缓存配置和使用说明

用友NC5.7缓存配置和使用说明

NC5.7缓存配置和使用说明缓存配置和使用方面的内容有以下三方面的内容:缓存配置文件、前台缓存配置、后台的缓存数据生成工具。

下面分别说明一下。

1配置文件的相关说明缓存的配置文件分为原始配置文件和生成配置文件。

原始配置文件有两种,一是tabsqls.xml,存在于UAP模块下,规定了整个系统使用前台缓存的默认参数。

另一类是tabconfig.xml,该文件存在于需要使用前台缓存的模块中,位于模块的config目录下,规定了模块需要缓存的表和列。

1.1 原始配置文件tabsqls.xml⏹HeadSql:前置sql,只在初始化缓存前执行。

该标签有个属性ignoreRrror,当其值为ture时,则忽略掉执行该sql时发生的异常。

⏹EndSql:后置sql,只在初始化缓存后执行。

其它情况同HeadSql。

⏹PageLoadSize:下载缓存数据时分页的大小。

单位是记录的条数。

⏹CanInit:是否可以初始化缓存及使用配置文件界面。

此变量直接对应到缓存配置板上的“初始化缓存”按钮是否可用。

⏹CanRefresh:是否可以刷新缓存。

此变量将控制前台用户可否手动刷新缓存,对应缓存配置板上的“刷新”按钮是否可用;⏹CanConfigure:是否可以配置缓存。

此变量将控制前台用户可否配置缓存,对应缓存配置板上的“配置”按钮是否可用;⏹RefreshCacheWhenLogin:是否在登陆系统后自动刷新缓存。

⏹StartupCache:是否启动缓存。

该变量是缓存启用停止的总开关。

对应缓存配置板上的“启动数据缓存”复选框。

⏹StartupAutoRefresh:是否启动自动刷新缓存功能,该属性对应缓存配置板上的“启动数据同步服务”复选框。

若为true,则系统启动时会开启VersionCheckService线程定时刷新缓存。

⏹RefreshInterval:刷新间隔,单位分钟。

⏹NeedCacheCorps: 需要下载的公司。

springboot整合mybatis-plus的两种分页查询方式--自定义的结果集分页返回浏览器

springboot整合mybatis-plus的两种分页查询方式--自定义的结果集分页返回浏览器

springboot整合mybatis-plus的两种分页查询⽅式--⾃定义的结果集分页返回浏览器⼀、⾸先是mybatis-plus⾃带的分页注意:下⾯的分页的页数和页⾯⼤⼩语句⼀定⼀定要写在select查询语句之前才能分页⽣效①② PageHelper.startPage(pNum,10);第⼀种⾃带分页⽅式:配置类添加:应⽤:⼆、返回的结果集如果不是直接从mappe直接查询出来的,⽽是经过add、get、set⼀些列操作之后再传给浏览器的话,⾃带的分页不能满⾜。

1.pomxml添加依赖<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version></dependency>View Code2.application.yml配置#分页pageHelperpagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: true3. 基本的mapper、service、controller都和普通的⼀样。

controller接收浏览器请求-->调⽤service的抽象⽅法-->serviceImpl实现类去调⽤mapper查询sql得到集合重点在serviceImpl层进⾏分页:PageHelper.startPage(pNum,10); //这条语句必须在下⾯的查询或者⾃定义查询之前//⼀般都是mapper层的select操作;//如果想返回⾃定义集合,看下⾯PageInfo<AreaEuiqmentVO> pageInfo = new PageInfo<>(list1); //list1是我⾃定义的结果集,return pageInfo.getList();。

Ansel 系统使用文档

Ansel 系统使用文档

m 方法:sort[分类]-catid num order where thumb m 方法:lists[文章列表]-catid num order where thumb page m 方法:tags[标签文章列表]-tag num order where thumb page
本文档使用 看云 构建 - 16 -
本文档使用 看云 构建
- 14 -
标签语法
标签语法
内容标签 文章上下页标签 模板调用标签
本文档使用 看云 构建
- 15 -
内容标签
内容标签 标签
作用:文章列表,分类列表,搜索文章列表,标签文章列表 用法示例:
<Ansel m="lists" catid="$catid" order="id DESC" num="4" page="$page"> .. HTML .. </Ansel>
后台首页中的系统信息和版权信息采用了插件方式显示 后台右上角多语言设置采用了插件方式显示
2、后台菜单管理
本文档使用 看云 构建
- 8 -
后台使用帮助
后台菜单关系到权限,系统采用AUTH权限 菜单有更新后可以更新权限,以免未及时更新权限 添加菜单的时候系统会自动判断是否有相应的模块/控制器/方法,如果没有就会创建相应的 后台菜单分权限控制和普通菜单,一般 菜单类型为 编辑,删除,状态 等等..这些的都建议不显示出来
/* 公用js方法 common.js 文件路径 statics/js/common.js 请在每个页面调用这个文件*/ /*====方法介绍======*/ /*所有加了 J_alink 类名的链接都不跳转 *a 标签class传入 J_alink 样式名会自动调用这个方法 *例如更新数据状态 只在当前页面刷新而不跳转 */ if($('a.J_alink').length){ $('a.J_alink').on('click',function(e){ e.preventDefault(); var $_this = this, $this = $($_this), href = $this.prop('href') $.getJSON(href).done(function (data) { if(data.status) { if(data.url) { layer.alert(""++"....",{icon:1},function(){ location.href = data.url; }); }else{ layer.msg(""++"....",{icon:1,time:1000},function(){ reloadPage(window); }); } } else { layer.alert(,{title:'错误提示',icon:0}); } }); }) } /*所有的删除操作,删除数据后刷新页面 *a 标签class传入 J_del 样式名会自动调用这个方法 *例如删除数据,会弹出是否删除,并在当前页面刷新 */ if($('a.J_del').length){ $('a.J_del').on('click',function(e){ e.preventDefault(); var $_this = this, $this = $($_this), href = $this.prop('href'), msg = $this.data('msg'); title=$this.data('title'); if(title=='' || title==undefined){ title=''; } if(msg == '' || msg == undefined){ msg = '确定要删除吗?'+title+'';
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pageinfo分页不生效sql语句-回复Pageinfo分页不生效SQL语句是在某些情况下,使用了分页函数或语句后,发现页面无法正常进行分页显示的问题。

在本文中,我们将从问题的定义开始,逐步解释可能的原因以及解决方案,帮助您解决该问题。

# 什么是Pageinfo分页不生效SQL语句?
Pageinfo分页不生效SQL语句指的是在使用分页函数或语句后,页面无法正确进行分页显示的问题。

通常,我们使用分页函数或语句来从数据库中获取数据,并将其按照一定规则进行分页显示,以提高数据展示的效果和性能。

然而,当出现分页不生效的情况时,可能会导致数据展示不完整或无法正常进行翻页,从而影响用户体验。

# 可能的原因
1. 错误的分页参数:在使用分页函数或语句时,必须正确设置分页参数,包括每页显示的数据数量、当前页码等。

如果参数设置有误,将导致分页不生效。

2. 数据库查询语句错误:分页函数或语句通常需要与数据库查询语句结合使用,如果查询语句本身有错误或不支持分页,那么分页操作将无法生效。

3. 数据库不支持分页:并非所有的数据库都支持分页功能,有些较旧的数据库或特定数据库可能不支持分页函数或语句。

在这种情况下,需要使用
其他方法来实现分页功能。

# 解决方案
1. 核对分页参数:首先,检查分页函数或语句的参数设置是否正确。

例如,确保每页显示的数据数量、当前页码等参数被正确传入。

如果发现参数设置有误,及时进行修正并重新测试。

2. 修改查询语句:检查数据库查询语句是否正确,确保它符合数据库的语法和规则。

通常情况下,分页语句需要在查询语句中添加LIMIT或OFFSET 等关键字来实现分页功能。

确保这些关键字被正确使用,并根据具体数据库的要求进行调整。

3. 使用其他分页方法:如果您的数据库不支持分页功能,或者您无法调整查询语句以实现分页,那么您可以考虑使用其他方法进行分页。

例如,可以通过编写自定义函数或使用编程语言来实现分页逻辑。

这种方法可能需要更多的工作和技术知识,但可以解决数据库不支持分页的问题。

4. 检查数据库版本:如果您的数据库是较旧的版本,可能存在分页功能的限制或错误。

在这种情况下,考虑升级数据库版本或使用更先进的数据库系统。

新的数据库版本通常会解决旧版本中存在的问题,并提供更好的分页支持。

# 总结
Pageinfo分页不生效SQL语句是在使用分页函数或语句时,发现页面无法正常进行分页显示的问题。

可能的原因包括错误的分页参数设置,查询语句错误,数据库不支持分页等。

解决方案包括核对分页参数,修改查询语句,使用其他分页方法和检查数据库版本。

通过识别问题原因并采取相应的解决方案,您可以解决Pageinfo分页不生效SQL语句的问题,确保页面正常进行分页显示。

相关文档
最新文档