spring整合mybatis逆向工程+PageHelper插件
来源:互联网 发布:windows自动修复 编辑:程序博客网 时间:2024/05/18 02:26
原生的mybatis需要手写sql语句,项目数据库表多了之后,可以让你写sql语句写到手软,于是mybatis官方提供了mybatis-generator:mybatis逆向工程代码生成工具,用于简化mybatis单表操作。
在PageHelper3.几的版本的时候,使用它对逆向工程生成的查询方法进行分页时出现失效的情况,而PageHelper4开始,亲测能够与mybatis逆向工程生成的方法完美兼容,今天就和大家分享spring+mybatis+PageHelper的一个整合小案例
第一步:创建maven工程,编写pom.xml
<!-- 集中定义依赖版本号 --> <!-- 已经依据maven仓库给出的版本兼容信息,调节好合适的spring、mybatis-spring、mybatis、pagehelper版本号 --><properties><junit.version>4.12</junit.version><spring.version>4.3.10.RELEASE</spring.version><mybatis.version>3.4.1</mybatis.version><mybatis.spring.version>1.3.0</mybatis.spring.version><mysql.version>5.1.32</mysql.version><slf4j.version>1.6.4</slf4j.version><jackson.version>2.8.8</jackson.version><druid.version>1.0.9</druid.version><httpclient.version>4.3.5</httpclient.version><jstl.version>1.2</jstl.version><servlet-api.version>2.5</servlet-api.version><jsp-api.version>2.0</jsp-api.version><joda-time.version>2.5</joda-time.version><commons-lang3.version>3.3.2</commons-lang3.version><commons-io.version>1.3.2</commons-io.version><commons-net.version>3.3</commons-net.version><!-- 4.1.6 --><pagehelper.version>4.1.0</pagehelper.version><jsqlparser.version>0.9.1</jsqlparser.version><commons-fileupload.version>1.3.1</commons-fileupload.version><jedis.version>2.7.2</jedis.version><solrj.version>4.10.3</solrj.version><dubbo.version>2.5.3</dubbo.version><zookeeper.version>3.4.7</zookeeper.version><zkclient.version>0.1</zkclient.version><activemq.version>5.11.2</activemq.version><freemarker.version>2.3.23</freemarker.version><quartz.version>2.2.2</quartz.version></properties><dependencies><!-- 时间操作组件 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${joda-time.version}</version></dependency><!-- Apache工具组件 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>${commons-net.version}</version></dependency><!-- Jackson Json处理工具包 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><!-- httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version></dependency><!-- quartz任务调度框架 --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version></dependency><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis.spring.version}</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><!-- 整合测试包 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>provided</scope> </dependency><!-- log4j2 --><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>2.7</version> </dependency><!-- JSP相关 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet-api.version}</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>${jsp-api.version}</version><scope>provided</scope></dependency><!-- 文件上传组件 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons-fileupload.version}</version></dependency><!-- Redis客户端 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>${jedis.version}</version></dependency><!-- solr客户端 --><dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>${solrj.version}</version></dependency><!-- dubbo相关 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>${zookeeper.version}</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>${zkclient.version}</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>${activemq.version}</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>${freemarker.version}</version></dependency></dependencies> <build> <plugins><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><port>8080</port><path>/</path></configuration></plugin></plugins> </build>
第二步:使用mybatis逆向工程工具生成代码:
mybatis-generator 下载地址:逆向工程工具
该工具并不是我分享的,我也没用过,如果是不能用的,希望能够在评论区告诉我
第三步:将mybatis逆向工程生成的代码复制到我们的项目下
第四步:配置文件相关:
4.1 配置log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="OFF" monitorInterval="1800"> <properties> <property name="LOG_HOME">D:/log4j2/mybatis/genertor/logs/</property> <property name="ERROR_LOG_FILE_NAME">error</property> </properties> <Appenders> <!-- 控制台打印日志 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d %-5p (%F:%L) - %m%n" /> </Console> <!-- 日志信息输出到文件配置 --> <RollingRandomAccessFile name="ErrorLog" fileName="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log" filePattern="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log.%d{yyyy-MM-dd}.gz"> <PatternLayout pattern="%d %-5p (%F:%L) - %m%n"/> <Policies> <!-- TimeBasedTriggeringPolicy指定的size是1,结合起来就是1天生成一个新文件。如果filePattern改成%d{yyyy-MM-dd HH}.gz,此时最小粒度为小时,则每一个小时生成一个文件。 --> <TimeBasedTriggeringPolicy/> <!-- 指定当文件体积大于size指定的值时,触发Rolling --> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- 指定最多保存的文件个数 --> <DefaultRolloverStrategy max="20"/> </RollingRandomAccessFile> <param name="Encoding" value="UTF-8" /> </Appenders> <Loggers> <!-- 3rdparty Loggers --> <logger name="org.springframework.core" level="info"> </logger> <logger name="org.springframework.beans" level="info"> </logger> <logger name="org.springframework.context" level="info"> </logger> <logger name="org.springframework.web" level="info"> </logger> <logger name="org.springframework.test.context.junit4.SpringJUnit4ClassRunner" level="info"> </logger> <logger name="com.lmsq.shaxuntech" level="debug" includeLocation="true" additivity="false"> <appender-ref ref="ErrorLog"/> <appender-ref ref="Console"/> </logger> <root level="info" includeLocation="true"> <appender-ref ref="ErrorLog"/> <appender-ref ref="Console"/> </root> </Loggers> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> </Configuration>
4.2配置spring相关配置文件
applicationContext-dao.xml
<!-- 加载配置文件 --><context:property-placeholder location="classpath:conf/db.properties" file-encoding="utf-8" /><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="driverClassName" value="${jdbc.driver}" /><property name="maxActive" value="10" /><property name="minIdle" value="5" /></bean><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /><!-- 配置Mapper配置文件所在路径 --><property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"/></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.stu.dao" /></bean>
application-service.xml
<!-- 配置包扫描器 --><context:component-scan base-package="com.stu.service"/>
springmvc.xml
<!-- 加载配置文件 --><context:property-placeholder location="classpath:conf/*.properties" file-encoding="utf-8" /><context:component-scan base-package="com.stu.api.controller" /><mvc:annotation-driven /><!-- 配置资源映射 --><mvc:resources location="/css/" mapping="/css/**"/><mvc:resources location="/js/" mapping="/js/**"/><!-- 配置多媒体解析器 --><!-- 定义文件上传解析器 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设定默认编码 --><property name="defaultEncoding" value="UTF-8"></property><!-- 设定文件上传的最大值5MB,5*1024*1024 --><property name="maxUploadSize" value="5242880"></property></bean><!-- 添加跨域请求支持 --><!-- <mvc:cors><mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,PUT,DELETE,PATCH,OPTIONS"/></mvc:cors> -->注意:这里为了方便阅读及后期扩展,将配置文件进行了分模块拆分,另外,正式的项目应该要加上事务的相关配置,这里不做演示
4.3mybatis相关配置
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name="com.stu.pojo" /></typeAliases><plugins><plugin interceptor="com.github.pagehelper.PageHelper"><!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="dialect" value="mysql"/></plugin></plugins></configuration>
4.4 数据库链接的properties文件
db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/stu?characterEncoding=utf-8jdbc.username=rootjdbc.password=root
4.5web.xml的配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Mybatis-generator</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 解决post乱码 --> <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- log4j2-begin --> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener> <filter> <filter-name>log4jServletFilter</filter-name> <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> </filter> <filter-mapping> <filter-name>log4jServletFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> <!-- log4j2-end --> <!-- 支持GET、POST、PATCH、PUT与DELETE请求 --> <filter> <filter-name>httpPutFormFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>httpPutFormFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping><!-- <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <!-- 加载spring配置文件 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext*.xml</param-value> </context-param> <!-- 加载springmvc配置文件 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 指定拦截路径 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
第五步:创建service层引用Mapper接口
接口:
package com.stu.service;import java.util.List;import com.stu.pojo.TUser;public interface UserService {public List<TUser> getUserInfo( String keywords, Integer page, Integer size);}
实现类:
package com.stu.service.impl;import java.util.List;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.stu.dao.TUserMapper;import com.stu.pojo.TUser;import com.stu.pojo.TUserExample;import com.stu.service.UserService;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate TUserMapper userMapper;@Overridepublic List<TUser> getUserInfo(String keywords, Integer page, Integer size) {PageHelper.startPage(page, size);TUserExample example = new TUserExample();if (!StringUtils.isBlank(keywords)) {example.createCriteria().andUsernameLike(keywords + "%");}List<TUser> list = userMapper.selectByExample(example);PageInfo<TUser> info = new PageInfo<TUser>(list);System.out.println("页码: " + info.getPageNum());System.out.println("每页大小: " + info.getSize());System.out.println("总页数: " + info.getPages());System.out.println("总记录数: " + info.getTotal());return list;}}注意:keywords是查询条件,对应表字段---->username
第六步:创建Controller
package com.stu.api.controller;import java.io.UnsupportedEncodingException;import java.util.List;import javax.annotation.Resource;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.stu.pojo.TUser;import com.stu.service.UserService;@RestController@RequestMapping("/api/v2/users")public class UserController {@Resourceprivate UserService userService;@GetMapping("/")public List<TUser> getUserInfo( String keywords ,Integer page, Integer size){System.out.println("page : " + page);System.out.println("size : " + size);if(keywords != null){try {keywords=new String(keywords.getBytes("ISO-8859-1"),"UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}List<TUser> user = userService.getUserInfo(keywords , page, size);return user;}}
第七步:运行项目 ,测试
1、使用tomcat7:run运行项目
2、在浏览器中输入:http://localhost:8080/api/v2/users/?keyword=张三&page=1&size=2
数据返回成功:
{"data":[{"id":1,"username":"王五","password":null,"state":0,"isdel":false,"addTime":1487644664000,"money":null,"leftMoney":22.1,"remark":null},{"id":2,"username":"张三","password":null,"state":0,"isdel":false,"addTime":1487644811000,"money":null,"leftMoney":22.1,"remark":null}],"meta":{"respCode":0,"respMsg":null,"detail":"OK","url":null},"pagination":{"page":1,"size":2,"totalPage":58,"totalCode":116}}
阅读全文
0 0
- spring整合mybatis逆向工程+PageHelper插件
- Mybatis 03 整合Spring+逆向工程
- mybatis和Spring的整合,逆向工程
- MyBatis学习七:spring和MyBatis整合、逆向工程
- 解决Mybatis 分页插件pagehelper不支持逆向工程Example条件查询
- mybatis逆向工程+PageHelper分页插件+mysql大文本类型字段的查询
- spring boot学习3之mybatis+druid+事务+PageHelper分页插件+sql打印插件整合
- Mybatis-Spring-SpringMVC-freemarker-PageHelper的整合
- 关于Spring+mybatis+PageHelper分页插件PageHelper的使用策略
- Spring+mybatis+PageHelper分页插件PageHelper的使用
- spring boot学习6之mybatis+PageHelper分页插件+jta多数据源事务整合
- Spring + Mybatis 使用 PageHelper 插件分页
- spring+mybatis利用pageHelper分页插件分页
- Maven+Spring + Mybatis 使用 PageHelper 插件分页
- Spring + Mybatis 使用 PageHelper 插件分页
- Spring + Mybatis 使用 PageHelper 插件分页
- Spring + Mybatis 使用 PageHelper 插件分页
- Spring中集成Mybatis分页插件PageHelper
- eclipse java GUI swing可视化开发插件WindowBuilder
- linux下gsoap编译onvif,实现discovery探测设备
- linux--防火墙配置
- 设计模式之Builder模式
- 其他题目---设计RandomPool结构
- spring整合mybatis逆向工程+PageHelper插件
- [Lintcode] #175 翻转二叉树
- 高斯消元集合
- 用this调用构造函数
- ES 基本使用《三》--terms
- 解决svn中“工作副本已经锁定”,或者svn清理失败的解决方法
- Spinner自定义字体
- 《android日常bug系列》android studio意外重启后 原本的import全部报错
- 阿里云linux服务器支持ipv6为苹果过审