标签:pageNum 众筹网 keyword int PageHelper 管理员 Integer 维护 pageSize
一、目标
以分页的形式把管理员信息显示到页面上。 特殊需求:兼顾关键词查询,让后端代码不管有没有查询条件都能够以分页形式显示数据。二、思路
- 流程图
三、代码
- 引入PageHelper插件依赖(MyBatis插件)
<!-- MyBatis 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> </dependency>
- 在SqlSessionFactoryBean中配置PageHelper插件
<!-- 配置 SqlSessionFactoryBean --> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 装配数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 指定 MyBatis 全局配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 指定 Mapper 配置文件位置 --> <property name="mapperLocations" value="classpath:mapper/*Mapper.xml" /> <!-- 配置插件 --> <property name="plugins"> <array> <!-- 配置PageHelper插件 --> <!-- 内部bean可以不写id --> <bean class="com.github.pagehelper.PageHelper"> <!-- 配置相关属性 --> <property name="properties"> <props> <!-- 配置数据库方言,告诉 PageHelper 当前使用的具体数据库, --> <!-- 让 PageHelper 可以根据当前数据库生成对应的分页SQL语 句 --> <prop key="dialect">mysql</prop> <!-- 配置页码的合理化修正,自动把浏览器传来的 PageNum 修正到 0~总页数范围 --> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean>
- AdminMapper.xml中编写SQL语句,并在AdminMapper中补上该接口,形成映射
<!-- 该部分<sql>是逆向工程自动生成的 -->
<sql id="Base_Column_List"> id, login_acct, user_pswd, user_name, email, create_time </sql>
<!-- 有关limit的语句已经由PageHelper写好了,我们只需要写select语句 -->
<!-- 这个BaseResultMap是逆向工程里自带的 --> <select id="selectAdminListByKeyword" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from t_admin where
<!-- CONCAT是sql里拼字符串的函数 -->
<!-- 这样可以做到兼容有关键字查询和无关键字查询 --> login_acct like CONCAT("%",#{keyword},"%") or user_name like CONCAT("%",#{keyword},"%") or email like CONCAT("%",#{keyword},"%") </select
List<Admin> selectAdminListByKeyword(String keyword);
- AdminService.java
/** * 获取PageInfo(内部封装了List类型的属性来放Admin) * @param keyword * @param pageSize * @param pageNum * @return */ PageInfo<Admin> getPageInfo(String keyword,Integer pageSize,Integer pageNum);
- AdminServiceImpl.java
@Override public PageInfo<Admin> getPageInfo(String keyword, Integer pageSize, Integer pageNum) { // 1.调用PageHelper的静态方法开启分页功能 // 这里体现了PageHelper的"非侵入式"设计:原本的查询代码不必有任何修改,要分页就加上这句话,不分页去掉就行了 PageHelper.startPage(pageNum, pageSize); // 2.执行查询 // 老师说这个AdminListByKeyword是Page类型的,Page继承了ArrayList,所以可以直接赋值给List,这是多态 List<Admin> AdminListByKeyword = adminMapper.selectAdminListByKeyword(keyword); //Page<Admin> AdminListByKeyword = adminMapper.selectAdminListByKeyword(keyword); // 3.封装到PagInfo对象中 return new PageInfo<Admin>(AdminListByKeyword); }
- 注:int与Integer
- int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,故int不适合作为web层的表单数据的类型
- Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量
- 泛型支持Integer,并不支持int。如:ArrayList list = new ArrayList();你不能在泛型中写int
- Integer是int的包装类,int则是java的一种基本数据类型
- 声明为Integer的变量需要实例化,而声明为int的变量不需要实例化
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
标签:pageNum,众筹网,keyword,int,PageHelper,管理员,Integer,维护,pageSize 来源: https://www.cnblogs.com/wfr-up-up/p/15058576.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。