pageinfo分页不生效 sql语句 -回复
- 格式:doc
- 大小:11.44 KB
- 文档页数:3
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次作业一、填空题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___方法,在网页中创建具备所需功能的程序对象。
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>可以编辑报表显示的边框,尺寸等等。
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操作分页后数据失效问题业务场景我们知道在使⽤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缓存配置和使用说明缓存配置和使用方面的内容有以下三方面的内容:缓存配置文件、前台缓存配置、后台的缓存数据生成工具。
下面分别说明一下。
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的两种分页查询⽅式--⾃定义的结果集分页返回浏览器⼀、⾸先是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();。
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();}这样报表就可以显示出来了,但是现在我们什么也看不到,因为报表中还没有添加任何内容。
1.myEclipse为什么跑的那么慢myEclipse以其丰富的功能博得程序员的热爱,但是其速度确实有问题,jsp文件打开会不停的校验,甚至出现卡死,分析原因,原来是validation在做怪。
好,既然找到了原因,那就把问题解决,方法如下:打开Myeclipse---->window--->preferences--->Myeclipse--->Validationbuild下除了Classpath dependence validate其他勾全部去掉。
这样它不会再去校验了。
想校验某个jsp文件如下操作:文件内容点右键---myeclipse---Run Validation2.dorado中find方法的应用public Record find(Array fields, Array values, Record startRecord)根据给定的一组字段值查找一条记录说明:此方法的fields和values参数是两个数组,分别表示要查找的字段名和要匹配的值.他们的长度必须一致。
此方法会返回找到的第一条匹配的记录,如果找不到匹配的记录将返回null.不论是否找到了记录,此方法都不会改变数据集的当前记录。
Parameters:fields - Array - 要查找的字段名的数组values - Array - 要查找的字段值的数组startRecord - Record - 从哪一条记录开始查找如果不指定此参数表示从数据集的第一条记录开始查找Returns:Record程序范例:/** 范例说明:查找薪水为2000且未婚的员工.如果找到了这样的记录,则将其设置为当前记录.*/var record = dataset.setV alue(["salary","married"],[2000,false]);if(record !=null) dataset.setCurrent(record);ng.OutOfMemoryError: PermGen space的解决方法解决方法;在tomcat的catalina.bat文件中添加set JA V A_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m4.dorado中tabset 多页标签的应用setCurrentTab(string/int name/index) 设置当前标签项并返回新的当前标签项name/index - String/int - 标签项的名字或序号此处的序号是指从0开始的序号在设置tabset时,一定要设置tabset的height,否则出现闪屏(菜单里的页面不断闪动)5.设备管理系统中连接oracle的一些设置C:\WINDOWS\system32\drivers\etc10.10.6.53 oracle01-vip10.10.6.54 oracle02-vip在oracle\ora92\network\admin\tnsnames.ora中添加YGDBSRV =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.6.53)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.6.54)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ygdbsrv)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))6.dorado中clearData(重置后查询)问题的解决办法在查询时,我用dataset.clearData()来实现对查询条件的重置,重置后在点查询报了一个警告:由于没有任何当前记录而无法完成当前操作![dataset.getV alue]。
pageinfo分页不生效sql语句-回复Pageinfo分页不生效SQL语句是在某些情况下,使用了分页函数或语句后,发现页面无法正常进行分页显示的问题。
在本文中,我们将从问题的定义开始,逐步解释可能的原因以及解决方案,帮助您解决该问题。
# 什么是Pageinfo分页不生效SQL语句?
Pageinfo分页不生效SQL语句指的是在使用分页函数或语句后,页面无法正确进行分页显示的问题。
通常,我们使用分页函数或语句来从数据库中获取数据,并将其按照一定规则进行分页显示,以提高数据展示的效果和性能。
然而,当出现分页不生效的情况时,可能会导致数据展示不完整或无法正常进行翻页,从而影响用户体验。
# 可能的原因
1. 错误的分页参数:在使用分页函数或语句时,必须正确设置分页参数,包括每页显示的数据数量、当前页码等。
如果参数设置有误,将导致分页不生效。
2. 数据库查询语句错误:分页函数或语句通常需要与数据库查询语句结合使用,如果查询语句本身有错误或不支持分页,那么分页操作将无法生效。
3. 数据库不支持分页:并非所有的数据库都支持分页功能,有些较旧的数据库或特定数据库可能不支持分页函数或语句。
在这种情况下,需要使用
其他方法来实现分页功能。
# 解决方案
1. 核对分页参数:首先,检查分页函数或语句的参数设置是否正确。
例如,确保每页显示的数据数量、当前页码等参数被正确传入。
如果发现参数设置有误,及时进行修正并重新测试。
2. 修改查询语句:检查数据库查询语句是否正确,确保它符合数据库的语法和规则。
通常情况下,分页语句需要在查询语句中添加LIMIT或OFFSET 等关键字来实现分页功能。
确保这些关键字被正确使用,并根据具体数据库的要求进行调整。
3. 使用其他分页方法:如果您的数据库不支持分页功能,或者您无法调整查询语句以实现分页,那么您可以考虑使用其他方法进行分页。
例如,可以通过编写自定义函数或使用编程语言来实现分页逻辑。
这种方法可能需要更多的工作和技术知识,但可以解决数据库不支持分页的问题。
4. 检查数据库版本:如果您的数据库是较旧的版本,可能存在分页功能的限制或错误。
在这种情况下,考虑升级数据库版本或使用更先进的数据库系统。
新的数据库版本通常会解决旧版本中存在的问题,并提供更好的分页支持。
# 总结
Pageinfo分页不生效SQL语句是在使用分页函数或语句时,发现页面无法正常进行分页显示的问题。
可能的原因包括错误的分页参数设置,查询语句错误,数据库不支持分页等。
解决方案包括核对分页参数,修改查询语句,使用其他分页方法和检查数据库版本。
通过识别问题原因并采取相应的解决方案,您可以解决Pageinfo分页不生效SQL语句的问题,确保页面正常进行分页显示。