ibatis 分页

请问以下面的方式实行分页具体应该怎么写:

List list=getSqlMapClientTemplate().queryForList("select", null, start, limit);

错误的配置文件(应该如何配置编写)oracle数据库

select * from
(select m.*,rownum r from aa m where rownum<#limit#)
where r>#start#

3个回答


select * from (
select * from goods where 1=1


rownum<=#end_row#

)

rn>#start_row#

select *
from (select m.*,row_number() over(order by id desc) as rNo
from aa m)
where rNo >= #start#
and rNo < #start#+#limit#

取值范围是
rownum>start_row and rownum<=limit

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ibatis分页取30条数据,前29条速度很快,但是到了最后一条速度很慢?

我的数据库中有20W条数据,我用ibatis分页,取其中的30条,我在控制台上看到,当取到29条的时候,速度还可以,但是在取第30条的时候却卡了好几秒才取出来,这个是怎么回事啊?![图片说明](https://img-ask.csdn.net/upload/201703/10/1489126284_114171.png)

ibatis中,用什么方式查询分页效率高?

ibatis中,用什么方式查询分页效率高? 我的数据量比较大。

ibatis自动生成代码里面有关于分页的吗?

ibatis自动生成代码里面有关于分页的吗?是哪个sql语句了。没找到limit

mybatis分页问题

<p> </p> <p>spring+mybatis+mysql</p> <p>t_user和t_role通过中间表t_user_role关联,多对多关系</p> <p>public class User{</p> <p><span style="white-space: pre;"> </span>private String userId;</p> <p><span style="white-space: pre;"> </span>private String userCode;</p> <p><span style="white-space: pre;"> </span>private String userName;</p> <p><span style="white-space: pre;"> </span>private String password;</p> <p><span style="white-space: pre;"> </span></p> <p><span style="white-space: pre;"> </span>List&lt;role&gt; roles = new ArrayList&lt;role&gt;();</p> <p> </p> <p>..........</p> <p>}</p> <p> </p> <p>配置文件:</p> <p>&lt;mapper namespace="com.mapper.UserMapper"&gt;</p> <p><span style="white-space: pre;"> </span>&lt;resultMap type="User" id="userMap"&gt;  </p> <p>        &lt;id column="user_id" property="userId"/&gt;</p> <p>        &lt;result column="user_name" property="userName"/&gt;</p> <p><span style="white-space: pre;"> </span>&lt;result column="password" property="password"/&gt;</p> <p><span style="white-space: pre;"> </span>&lt;result column="create_date" property="createDate"/&gt;<span style="white-space: pre;"> </span></p> <p>        &lt;collection property="roles" javaType="ArrayList" ofType="Role"&gt;</p> <p>            &lt;result column="role_id" property="roleId" javaType="string"/&gt;</p> <p>            &lt;result column="role_name" property="roleName" javaType="string"/&gt;           </p> <p>        &lt;/collection&gt;</p> <p>    &lt;/resultMap&gt;<span style="white-space: pre;"> </span></p> <p><span style="white-space: pre;"> </span></p> <p><span style="white-space: pre;"> </span>&lt;select id="queryUser" parameterType="User" resultMap="userMap"&gt;</p> <p><span style="white-space: pre;"> </span>SELECT u.user_id,u.user_name,u.password,r.role_id,r.role_name</p> <p><span style="white-space: pre;"> </span>FROM t_user u LEFT OUTER JOIN t_address a ON u.user_id=a.address_id</p> <p><span style="white-space: pre;"> </span>LEFT OUTER JOIN t_user_role ur ON ur.user_id=u.user_ID</p> <p><span style="white-space: pre;"> </span>LEFT OUTER JOIN t_role r ON r.role_id=ur.role_id</p> <p>    &lt;/select&gt;<span style="white-space: pre;"> </span></p> <p>&lt;/mapper&gt;</p> <p>这是按MYBATIS官网文档做的,这样可以实现多对多的功能,但在做分页时出了问题。</p> <p>如果一个用户有3个角色,这样在SQL查询结果中同一个用户会有三条记录</p> <p> </p> <p>如果要在用户列表页面做分页时就不知道怎么处理了。</p> <p> </p> <p> </p> <p>数据库用的是:MYSQL,本来的想法是在 SELECT后面加LIMIT,但因为同一个用户有多个角色,这样翻页就有问题。请各位给指点一下,如果是程序有问题也请指出来,谢谢</p> <div><br></div>

struts+javascript 分页问题请高手们解决一下

分页问题 本人的分不太多 请高手们见谅 调用顺序是这样的 首先一个请求到到login.action的findAllUsers()方法成功执行后跳到SUCCESS相应的页面(就是3的页面 详细内容在下面), success页面通过findAllUsers()方法传过来的值进行页面传值,然后success里面形成一个如PageUtil类里面getToolsMenu()方法返回的字符串(就是首页,下一页的字符串) 现在问题出现了 当点击下一页的时候他是怎么用javascript往action里面传值的,就是这条语句document.forms(0).pages.value=1,原以为只要在login.action里面声明一个私有成员就可以实现,但是不好使,pages是login.action里面的私有成员吗?如果是用什么方法传进去的值,如果不是又怎么实现下一页的?(难道javascript可以操纵login.action里面的私有成员?) 1--------------------------------------------------------- 这个是login.action的类 请求执行里面的findAllUsers()方法 package org.login.actions; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.login.page.PageUtil; import org.login.service.IUserService; import org.login.vo.Users; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; public class Login extends ActionSupport implements ModelDriven, Preparable { private IUserService userService; private String id; private int pages = 1; private int pagesize = 3; private String pageBar; private List list; private Users user; public String getId() { return id; } public void setId(String id) { this.id = id; } public IUserService getUserService() { return userService; } public void setUserService(IUserService userService) { this.userService = userService; } public int getPages() { return pages; } public void setPages(int pageIndex) { this.pages = pageIndex; } public String getPageBar() { return pageBar; } public void setPageBar(String pageBar) { this.pageBar = pageBar; } public List getList() { return list; } public void setList(List list) { this.list = list; } public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public void prepare() throws Exception { if (id == null || id.length() == 0) user = new Users(); else user = getUserService().getUserById(Integer.parseInt(id)); } public String execute() throws Exception { if (getUserService().isLogin(user)) { return SUCCESS; } return INPUT; } public String save() throws Exception { System.out.println(user.getUserName().toString() + &quot;@@@@@@@@@@@@@@@@@@@@@@&quot;); if (getUserService().insertUser(user)) { return SUCCESS; } return ERROR; } public String edit() { return SUCCESS; } public String update() throws Exception { if (getUserService().updateUser(user)) { return SUCCESS; } return ERROR; } // 好像不能直接对id进行操作 public String delete() throws Exception { if (getUserService().deleteUser(Integer.parseInt(id))) { return SUCCESS; } return ERROR; } public String findAllUsers() throws Exception { PageUtil page = new PageUtil(); int count = getUserService().getCount(); page.setCurPage(pages); page.setPageSize(pagesize); page.setTotalRow(count); pageBar = page.getToolsMenu(); Map pageMap = new HashMap(); pageMap.put(&quot;start&quot;, page.getStart()); pageMap.put(&quot;end&quot;, page.getEnd()); list = getUserService().getAllUser(pageMap); return SUCCESS; } public Users getModel() { return user; } public int getPagesize() { return pagesize; } public void setPagesize(int pagesize) { this.pagesize = pagesize; } } 2----------------------------------------------------- 这个是分页算法类PageUtil package org.login.page; import java.util.List; /** * ibatis分页Bean * @author Administrator * */ public class PageUtil { private int curPage = 0; //当前页 private int pageSize = 0; //每页多少行 private int endSize ; //用于not in(select top endSize id)不在多少行内 private int totalRow ; //共多少行 private int totalPage ; //共多少页 public int getStart(){ if(curPage>1) return (curPage-1)*pageSize; else return 0; } public int getEnd(){ return pageSize; } public int getCurPage() { return curPage; } public void setCurPage(int curPage) { int temp = pageSize * (curPage-1); this.setEndSize(temp); this.curPage = curPage; } public int getEndSize() { return endSize; } public void setEndSize(int endSize) { this.endSize = endSize; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRow() { return totalRow; } public void setTotalRow(int totalRow) { totalPage = totalRow/pageSize; if(totalRow%pageSize > 0) totalPage = totalPage + 1; this.totalRow = totalRow; } public int getTotalPage(){ return this.totalPage; } public String getToolsMenu() { StringBuffer str = new StringBuffer(""); int next, prev; prev = curPage - 1; next = curPage + 1; if (curPage > 1) { str.append( "<a href=\"#\" onclick=\"document.forms(0).pages.value=1;document.forms(0).submit();\">首页</a>&nbsp;"); } else { str.append("<a href=\"#\">首页</a>&nbsp;"); } if (curPage > 1) { str.append( "<a href=\"#\" onclick='document.forms(0).pages.value=" +prev + ";document.forms(0).submit();'>上页</a>&nbsp;"); } else { str.append("<a href=\"#\">上页</a>&nbsp;"); } if (curPage < totalPage) { str.append( "<a href=\"#\" onclick='document.forms(0).pages.value=" +next + ";document.forms(0).submit();'>下页</a>&nbsp;"); } else { str.append("<a href=\"#\" >下页</a>&nbsp;"); } if (totalPage > 1 && curPage != totalPage) { str.append( "<a href=\"#\" onclick='document.forms(0).pages.value=" +totalPage + ";document.forms(0).submit();'>末页</a>&nbsp;&nbsp;"); } else { str.append("<a href=\"#\" >末页</a>&nbsp;&nbsp;"); } str.append(" 共" + totalRow + "条记录"); str.append(" 每页<SELECT size=1 name=pagesize onchange='this.form.pages.value=1;this.form.pageSize.value=this.value;this.form.submit();'>"); if (pageSize == 3) { str.append("<OPTION value=3 selected>3</OPTION>"); } else { str.append("<OPTION value=3>3</OPTION>"); } if (pageSize == 10) { str.append("<OPTION value=10 selected>10</OPTION>"); } else { str.append("<OPTION value=10>10</OPTION>"); } if (pageSize == 20) { str.append("<OPTION value=20 selected>20</OPTION>"); } else { str.append("<OPTION value=20>20</OPTION>"); } if (pageSize == 50) { str.append("<OPTION value=50 selected>50</OPTION>"); } else { str.append("<OPTION value=50>50</OPTION>"); } if (pageSize == 100) { str.append("<OPTION value=100 selected>100</OPTION>"); } else { str.append("<OPTION value=100>100</OPTION>"); } str.append("</SELECT>"); str.append("条 分" + pageSize + "页显示 转到"); str.append("<SELECT size=1 name=Pagelist onchange='this.form.pages.value=this.value;this.form.submit();'>"); for (int i = 1; i < totalPage + 1; i++) { if (i == curPage) { str.append("<OPTION value=" + i + " selected>" + i + "</OPTION>"); } else { str.append("<OPTION value=" + i + ">" + i + "</OPTION>"); } } str.append("</SELECT>页"); str.append("<INPUT type=hidden value=" + curPage + " name=\"pages\" > "); str.append("<INPUT type=hidden value=" + pageSize + " name=\"pageSize\"> "); return str.toString(); } } 3--------------------------------------------------------------------------------- 这个是success成功之后跳转的页面 也就是显示分页的页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Users list</title> <style type="text/css"> table { border-collapse: collapse; font-size: 12px; } </style> </head> <body> <br /><br /><br /><br /> <s:form action="show"> <table border="1" width="50%" align="center"> <tr bgcolor="#cccc00"> <td align="center">UserID</td> <td align="center">UserName</td> <td align="center">Password</td> <td colspan="2" align="center">Options</td> </tr> <s:iterator value="list" id="user" status="st"> <tr <s:if test="#st.odd">style="background-color:#dddddd"</s:if> <s:else>style="background-color:#eeeeee"</s:else>> <td align="center"><s:property value="id" /></td> <td align="center"><s:property value="userName" /></td> <td align="center"><s:property value="password" /></td> <td align="center"> <s:url id="update" action="edit"> <s:param name="id"> <s:property value="id" /> </s:param> <s:param name="userName"> <s:property value="userName" /> </s:param> <s:param name="password"> <s:property value="password" /> </s:param> </s:url> <s:a href="%{update}">edit</s:a> </td> <td align="center"> <s:url id="delete" action="delete"> <s:param name="id"> <s:property value="id" /> </s:param> </s:url> <s:a href="%{delete}">delete</s:a> </td> </tr> </s:iterator> <tr> <td colspan="4"> <s:property value="#request.pageBar" escape="false"/> </td> </tr> </table> </s:form> </body> </html> [b]问题补充:[/b] [i][/i][u][/u][b][/b][color=black][size=xx-large][size=x-large]我也想过是隐藏域。隐藏域可以隐士声明吗?还是那个表单实际上就是对应着action里面的私有成员?[/size][/size][/color] [b]问题补充:[/b] [b][i][color=brown][size=xx-large]我也想也是在action中的属性 但是我把pages这个属性改成pages1就不好使了,这是为什么,点下一页的时候报网页上有错误。说document.form[0].pages1.value 不是函数这是什么意思啊[/size][/color][/i][/b] [b]问题补充:[/b] [size=xx-large][color=brown]这哥们啊。我还不至于这么愚蠢,action里的我也改了,但是还是不好使。是不是有什么地方没注意的给遗漏了?(所有的pages我都改成pages1了)。[/color][/size] [b]问题补充:[/b] 还有你所说的。就算我action里面有对应的字段,我用document去取也报错了,除了那个pages,action里的什么变量都不好使,就算把pages改成pages1都不行,也说没有定义,我还没换成别的变量,就是把所有的pages改成pages1都不行.只能用pages这一个变量。[size=xx-large][/size]

ibatis,hibernate分页

这几天自己一直在整合框架(Struts2+ibatis2+Spring2.5), 因为之前项目用到过分页 ,所以自己也想整一个出来, 但是看了以前项目封装的 没有注释 ,完全不懂! 在此 ,小弟求一个比较成熟,可用的分页实例, 最好是结合ibatis,或者hibernate ...

spring+ibatis+jdbc+ajax(dwr)这样设计框架好不

数据库连接、事务用spring 实现ibatis dao(只负责查询)、 jdbc dao(sqlFunction、queryForList这两个查询,结合dwr做页面动态加载和。以及实现数据增删改方法) 具体实现:ibatis 负责查询列表数据和分页。jdbc 修改表单。 增删改数据时用以下方式操作: 建立xml文件。xml文件包含修改数据的sql,仿ibatis,表单变量用##包含。一般一个表单保存对应一条sql(比如用<sql key=""....>标识),可以一个模块用一个xml文件,如果有多条sql,一个表单用一个xml文件 目录结构如下: webroot --sqldir --module1 --common.xml //module1公用保存文件 --newwork.xml//包含多条sql的保存文件.比如要保存附件或者主从表 页面表单固定的元素:service(公用),savefile(对应的保存要执行的文件),savesql(可选,指定制定要执行的sql的唯一标识) 表单修改加载使用dwr结合jdbc+js加载修改页面 这样做开发效率能得到一定的提高,放弃了bean。但无形中暴露了很多sql。 大家讨论下有没有好的办法

定义mybatis物理分页拦截器,报错

各位大神好,本人初学mybatis,正在做一个项目,由于查询数据量较大,要用到mybaitis的物理分页技术,参考博客如下http://www.cnblogs.com/samkin/articles/2864689.html,但是在这块代码报错,@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) }) 报错信息为org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection) 错误,本人用的mybatis的jar包版本是3.4.1,请大神帮忙看看,不胜感激

org.apache.ibatis.exceptions.PersistenceException怎么解决?

调试一个开源项目出现报错,项目所有sql都会报空指针异常 ``` 严重: Servlet.service() for servlet [springMvc] in context with path [/mallapp] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NullPointerException ### The error may exist in file [H:\WorksSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\mallapp\WEB-INF\classes\mybatis\category\CategoryMapper.xml] ### The error may involve CategoryMapper.listAll-Inline ### The error occurred while setting parameters ### SQL: select category_name, category_img, sort, category_id, super_id from shop_category where super_id =? order by sort ### Cause: java.lang.NullPointerException] with root cause java.lang.NullPointerException at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:43) at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:81) at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:80) at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) at com.sun.proxy.$Proxy84.parameterize(Unknown Source) at org.apache.ibatis.executor.ReuseExecutor.prepareStatement(ReuseExecutor.java:79) at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:56) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358) at com.sun.proxy.$Proxy74.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198) at com.yq.dao.DaoSupport.findForList(DaoSupport.java:118) at com.yq.service.category.impl.CategoryService.listAll(CategoryService.java:62) at com.yq.service.category.impl.CategoryService$$FastClassBySpringCGLIB$$51d95cd7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:711) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) at com.yq.service.category.impl.CategoryService$$EnhancerBySpringCGLIB$$c2253a36.listAll(<generated>) at com.yq.controller.category.CategoryController.list(CategoryController.java:80) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ``` CategoryMapper.xml ``` <?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="CategoryMapper"> <!--表名 --> <sql id="tableName"> shop_category </sql> <!-- 字段 --> <sql id="Field"> category_name, category_img, sort, category_id, super_id </sql> <!-- 字段值 --> <sql id="FieldValue"> #{category_name}, #{category_img}, #{sort}, #{category_id}, #{super_id} </sql> <!-- 新增--> <insert id="save" parameterType="pd"> insert into <include refid="tableName"></include> ( <include refid="Field"></include> ) values ( <include refid="FieldValue"></include> ) </insert> <!-- 删除--> <delete id="delete" parameterType="pd"> delete from <include refid="tableName"></include> where category_id = #{category_id} </delete> <!-- 修改 --> <update id="edit" parameterType="pd"> update <include refid="tableName"></include> set category_name = #{category_name}, category_img = #{category_img}, sort = #{sort} where category_id = #{category_id} </update> <!-- 通过ID获取数据 --> <select id="findById" parameterType="pd" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where category_id = #{category_id} </select> <!-- 列表 --> <select id="datalistPage" parameterType="page" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where 1=1 and super_id =#{pd.super_id} order by sort </select> <!-- 列表(全部) --> <select id="listAll" parameterType="pd" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where super_id =#{super_id} order by sort </select> <!-- 批量删除 --> <delete id="deleteAll" parameterType="String"> delete from <include refid="tableName"></include> where category_id in <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </delete> </mapper> ``` mybatis-config.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true" /><!-- 全局映射器启用缓存 --> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> <!-- 打印查询语句 --> <setting name="logImpl" value="LOG4J" /> </settings> <typeAliases> <typeAlias type="org.change.entity.system.User" alias="User"/> <typeAlias type="org.change.entity.system.Role" alias="Role"/> <typeAlias type="org.change.entity.system.Menu" alias="Menu"/> <typeAlias type="org.change.entity.system.Dictionaries" alias="Dictionaries"/> <typeAlias type="org.change.entity.system.Department" alias="Department"/> <typeAlias type="org.change.util.PageData" alias="pd"/> <!-- 分页 --> <typeAlias type="org.change.entity.Page" alias="Page"/> </typeAliases> <plugins> <plugin interceptor="org.change.plugin.PagePlugin"> <property name="dialect" value="mysql"/> <property name="pageSqlId" value=".*listPage.*"/> </plugin> </plugins> </configuration> ``` DAO.java ``` public interface DAO { /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception; /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception; /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception; /** * 查找对象封装成Map * @param s * @param obj * @return * @throws Exception */ public Object findForMap(String sql, Object obj, String key , String value) throws Exception; } ``` DaoSupport.java ``` @Repository("daoSupport") public class DaoSupport implements DAO { @Resource(name = "sqlSessionTemplate") private SqlSessionTemplate sqlSessionTemplate; /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception { return sqlSessionTemplate.insert(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchSave(String str, List objs )throws Exception{ return sqlSessionTemplate.insert(str, objs); } /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception { return sqlSessionTemplate.update(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public void batchUpdate(String str, List objs )throws Exception{ SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory(); //批量执行器 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false); try{ if(objs!=null){ for(int i=0,size=objs.size();i<size;i++){ sqlSession.update(str, objs.get(i)); } sqlSession.flushStatements(); sqlSession.commit(); sqlSession.clearCache(); } }finally{ sqlSession.close(); } } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchDelete(String str, List objs )throws Exception{ return sqlSessionTemplate.delete(str, objs); } /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception { return sqlSessionTemplate.delete(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception { return sqlSessionTemplate.selectOne(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception { return sqlSessionTemplate.selectList(str, obj); } public Object findForMap(String str, Object obj, String key, String value) throws Exception { return sqlSessionTemplate.selectMap(str, obj, key); } } ``` spring.xml ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 配置事务管理器 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 阿里 druid数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <!-- 数据库基本信息配置 --> <property name="driverClassName" value="${driverClassName}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="filters" value="${filters}" /> <!-- 最大并发连接数 --> <property name="maxActive" value="${maxActive}" /> <!-- 初始化连接数量 --> <property name="initialSize" value="${initialSize}" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="${maxWait}" /> <!-- 最小空闲连接数 --> <property name="minIdle" value="${minIdle}" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" /> <property name="validationQuery" value="${validationQuery}" /> <property name="testWhileIdle" value="${testWhileIdle}" /> <property name="testOnBorrow" value="${testOnBorrow}" /> <property name="testOnReturn" value="${testOnReturn}" /> <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="${removeAbandoned}" /> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" /> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="${logAbandoned}" /> </bean> <!-- 启用注解 --> <context:annotation-config /> <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 --> <context:component-scan base-package="com"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 注解方式配置事务--> <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> <!-- 拦截器方式配置事务 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 事物处理 --> <aop:config> <aop:pointcut id="pc" expression="execution(* com.*.service..*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config> <!-- 配置mybatis --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- mapper扫描 --> <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> </beans> ```

jdbc实现分页的完整代码该怎么写。

求好心人给完整的代码。让我熟悉一下。 jdbc、servlet、jsp、

mybatis 分页排序, 排序无效, sql在Oracle客户端可以排序

![图片说明](https://img-ask.csdn.net/upload/201708/27/1503811177_100242.png)

使用ssi框架实现分页查询?

struts2,ibatis ,spring如何实现分页查询并在jsp页面实时更新数据库数据?

mysql分页查询语句错误,请大神指点

``` <select id="selectProCdnMmBdNiNoHiIpSegInfoBrowse" resultMap="proCdnMmBdNiNoHiIpSegInfoMap" parameterClass="java.util.Map"> SELECT id, id_num, INET_ATON(start_ip), INET_ATON(end_ip), type, cdn_basic_id, cdn_net_id, cdn_node_id, cdn_house_id, FROM pro_cdn_mm_bd_ni_no_hi_ip_seg_info limit #startRow#,#endRow# </select> ``` 报错信息 ``` Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM pro_cdn_mm_bd_ni_no_hi_ip_seg_info limit 0,10000' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1356) at com.jolbox.bonecp.PreparedStatementHandle.execute(PreparedStatementHandle.java:138) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:185) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189) ... 41 more ```

求个Demo用的是ssi整合的,功能增删改查以及分页,前端是easyUI,数据库是mysql

求一份Struts2+Spring+ibatis的增删改查以及分页的例子,前端用的是easyUI,数据库是mysql的项目例子

MyBatis-plus分页条件自定义查询的问题

```java package io.renren.modules.soft.service.impl; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.renren.common.utils.PageUtils; import io.renren.common.utils.Query; import io.renren.modules.soft.dao.OrderDao; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; import io.renren.modules.soft.service.OrderService; @Service("orderService") public class OrderServiceImpl extends ServiceImpl<OrderDao, OrderEntity> implements OrderService { @Autowired private OrderDao orderDao; @Override public PageUtils getlistData(Map<String, Object> params) { Page<OrderVO> page = (Page<OrderVO>) new Query<OrderVO>().getPage(params); page.setRecords(this.baseMapper.selectListData(page,params)); return new PageUtils(page); } } ``` OrderDao.java方法 ``` package io.renren.modules.soft.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; /** * 订单基础表 * * @author Mark * @email sunlightcs@gmail.com * @date 2019-03-22 08:54:02 */ @Mapper public interface OrderDao extends BaseMapper<OrderEntity> { List<OrderVO> selectListData(Page<OrderVO> page, @Param("map")Map<String, Object> params); } ``` 自定的XML中的SQL语句 ``` <?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="io.renren.modules.soft.dao.OrderDao"> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.entity.OrderEntity" id="orderMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="userId" column="user_id"/> <result property="payEndTime" column="pay_end_time"/> <result property="createTime" column="create_time"/> <result property="createBy" column="create_by"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="status" column="status"/> </resultMap> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.dto.OrderVO" id="orderVOMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="username" column="username"/> <result property="payEndTime" column="pay_end_time"/> </resultMap> <select id="selectListData" parameterType="String" resultMap="orderVOMap"> SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id <if test="map.username != null"> AND au.wechat_nick_name like concat(concat("%",#{map.username}),"%") </if> </select> </mapper> ``` 出现的问题:当map.username不是空的时候,在第一页能够查询出所有的结果,但是跳转到第二页的时候,再输入条件查询,直接连带着分页参数和条件查询参数直接查询SQL语句。 这样,如果第二页中不存在这个条件的结果,那么就完全查询不到着一条数据。请问有什么解决方法 当在第一页查询的日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 0(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 3 ``` 当在第二页的时候查询日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 10(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 0 ``` 因为分页了,所有查询不到结果,可是我想分不分也都能查询到全部结果,各位大神有什么好的解决方案,请帮一下忙。

pageHelper分页转型时失败

这个问题纠结了好久一直不知道什么情况,有时候是好的有时候就报错。所以来请教下大神们 我查询的结果,按照说明可以把List对象强转为Page,但是这个转化,偶尔会失败,不知道什么原因 java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page 有时候又莫名其妙的好了。至今还是没搞懂 附代码 PageHelper.startPage(1, 10,); List<Country> list = countryMapper.selectByOrder2("id"); Page<Country> p = (Page<Country>)list;//这一行报错

mybatis拦截器分页问题。intercept有时候不执行

我在SSM工程中使用mybatis拦截器做分页,但是拦截器的intercept有时候执行有时候不执行,不知道为什么,程序员没有没有经验呢?谢谢赐教 代码: @Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class })}) public class PageInterceptor implements Interceptor { private static String sqlId = ""; private static String dialect = ""; public Object intercept(Invocation inv) throws Throwable { System.out.println("到了"); RoutingStatementHandler handler = (RoutingStatementHandler) inv.getTarget(); StatementHandler delegate = (StatementHandler)ReflectionUtils.getFieldValue(handler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(delegate, "mappedStatement"); if(mappedStatement.getId().matches(sqlId)) { //只拦截id包含pages的SQL BoundSql bound = delegate.getBoundSql(); //获得当前绑定Sql的参数对象 Object object = bound.getParameterObject(); if(object == null) { return inv.proceed(); } if(object instanceof PageEntity<?>) { PageEntity<?> page = (PageEntity<?>)object; String sql = bound.getSql(); String pageSql = getPageSql(sql, page); ReflectionUtils.setFieldValue(bound, "sql", pageSql); } } return inv.proceed(); } public String getPageSql(String sql, PageEntity<?> page) { //此处省略SQL拼接代码 return pageSql.toString(); } public Object plugin(Object arg0) { return Plugin.wrap(arg0, this); } public void setProperties(Properties property) { sqlId = property.getProperty("sqlId"); //".*Pages*.*" dialect = property.getProperty("dialect"); //"oracle" } } 配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true" /> <setting name="lazyLoadingEnabled" value="true" /> <setting name="multipleResultSetsEnabled" value="true" /> <setting name="useColumnLabel" value="true" /> <setting name="useGeneratedKeys" value="false" /> <setting name="defaultExecutorType" value="SIMPLE" /> </settings> <typeAliases> <typeAlias type="com.cifpay.user.entity.UserEntity" alias="user" /> <typeAlias type="com.cifpay.role.entity.RoleEntity" alias="role" /> <typeAlias type="com.cifpay.menu.entity.MenuEntity" alias="menu" /> <typeAlias type="com.cifpay.role.entity.RoleMenuMapEntity" alias="roleMenuMap" /> <typeAlias type="com.cifpay.role.entity.UserRoleMapEntity" alias="userRoleMap" /> </typeAliases> <plugins> <plugin interceptor="com.cifpay.base.interceptor.PageInterceptor"> <property name="sqlId" value=".*Pages*.*"/> <property name="dialect" value="oracle"/> </plugin> </plugins> <mappers> <mapper resource="com/cifpay/user/entity/User.sqlMap.xml" /> <mapper resource="com/cifpay/role/entity/Role.sqlMap.xml" /> <mapper resource="com/cifpay/menu/entity/Menu.sqlMap.xml"/> <mapper resource="com/cifpay/role/entity/RoleMenuMap.sqlMap.xml"/> <mapper resource="com/cifpay/role/entity/UserRoleMap.sqlMap.xml"/> </mappers> </configuration>

mybatis分页查询出现实例化错误

Servlet.service() for servlet [springmvc] in context with path [/CRM_SSM] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating null with invalid types () or values (). Cause: java.lang.NullPointerException] with root cause

关于分页

<p>     写过好多有分页功能的应用,也用过好多种分页方法,像Hibernate、ibatis、jdbc,但总感觉怪怪的。</p> <p>在第一家公司时候,用的是HIBERNATE框架,分页也就是它所提供的。后来接触到了IBATIS,它的分页也</p> <p>领教过了,但性能真不敢让人恭维。</p> <p>    今天下午,在公司没事干,突发奇想,对三种分页进行了效率比较。以下是结果:</p> <p>总计 1310720 条, 第 262144 页/ 共 262144 页</p> <p>hibernate<br />1. 处理时间+++++7581ms<br />2. 处理时间+++++7601ms<br />3. 处理时间+++++8573ms<br />4. 处理时间+++++7370ms<br />5. 处理时间+++++7340ms</p> <p>jdbc  <br />1. 2008-10-14 17:55:23,250 INFO [cn.zzuli.PageBean] - 处理时间:1783ms<br />2. 2008-10-14 17:57:31,504 INFO [cn.zzuli.PageBean] - 处理时间:1562ms<br />3. 2008-10-14 17:59:45,016 INFO [cn.zzuli.PageBean] - 处理时间:1482ms<br />4. 2008-10-14 18:01:46,301 INFO [cn.zzuli.PageBean] - 处理时间:1472ms<br />5. 2008-10-14 18:05:26,858 INFO [cn.zzuli.PageBean] - 处理时间:1472ms</p> <p>ibatis <br />1. 处理时间+++++21852ms<br />2. 处理时间+++++20139ms<br />3. 处理时间+++++19658ms<br />4. 处理时间+++++19628ms<br />5. 处理时间+++++19668ms</p> <p> </p> <p> </p> <p>我一个下午就玩这个了。我自认为分页查询应该可以不用ORM了吧!但我的经验也不是很丰富,所以也不敢</p> <p>下结论。希望有哪位高手能点解释!o(∩_∩)o...</p>

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐