SpringBoot+Mysql+Mybatis+Mybatis通用mapper+PageHelper整合
Posted zengnansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot+Mysql+Mybatis+Mybatis通用mapper+PageHelper整合相关的知识,希望对你有一定的参考价值。
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zns</groupId> <artifactId>zns-project</artifactId> <version>1.0.0</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 如果使用自带tomcat请注释下面,如果使用外置tomcat不要注释下面 --> <!-- <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions>--> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mybatis-spring-boot-starter--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!-- mybatis 通用mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.4</version> <exclusions> <exclusion> <artifactId>persistence-api</artifactId> <groupId>javax.persistence</groupId> </exclusion> </exclusions> </dependency> <!-- mybatis pagehelper分页 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> <!-- mysql连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- druid 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.10</version> </dependency> </dependencies> <build> <finalName>$project.artifactId</finalName> <plugins> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
application.yml
server: port: 9001 servlet: context-path: / spring: application: name: zns-project jmx: default-domain: zns-project #指定default-domain 可以解决多个应用部署在同一个tomcat启动报错问题 enabled: false servlet: multipart: enabled: true max-file-size: 50MB #单个文件大小上限 max-request-size: 100MB #文件总大小上限 jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 #mysql数据源和连接池配置 datasource: name: con1 url: jdbc:mysql://localhost:3306/zns username: root password: 123456 #使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select ‘x‘ testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 #mybatis mybatis: # 映射文件的路径,多个配置可以使用英文逗号隔开 mapper-locations: classpath:mybatis/mapper/*.xml # 类型别名包配置,只能指定具体的包,多个配置可以使用英文逗号隔开 #type-aliases-package: com.zns.model # Mybatis SQL语句控制台打印 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #通用mapper 多个接口时逗号隔开 mapper: mappers: tk.mybatis.mapper.common.BaseMapper # 是个类,不是包名 not-empty: true # 设置以后,会去判断 insert 和 update 中字符串类型!=‘‘ identity: MYSQL enum-as-simple-type: true #枚举按简单类型处理 #pagehelper pagehelper: # 配置使用哪种数据库语言,不配置的话pageHelper也会自动检测,这里使用的mysql。 helper-dialect: mysql # 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询 reasonable: true # 支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页 supportMethodsArguments: true # 为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值,默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。 params: count=countSql
启动类加上
//mapper扫描包路径,如果集成了通用mapper MapperScan应该引用tk.mybatis.spring.annotation.MapperScan,否则org.mybatis.spring.annotation.MapperScan
@MapperScan("com.zns.project.mapper")
增加一个配置类WebConfig
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer @Override public void addInterceptors(InterceptorRegistry registry)
DruidDataSourceConfig
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; @Configuration public class DruidDataSourceConfig /** * 配置DruidDataSource * * @return */ @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDataSource() DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; /** * 配置transactionManager * * @return */ @Bean public PlatformTransactionManager transactionManager() throws SQLException return new DataSourceTransactionManager(druidDataSource()); /** * 注册DruidServlet * * @return */ @Bean public ServletRegistrationBean druidServletRegistrationBean() ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); servletRegistrationBean.setServlet(new StatViewServlet()); servletRegistrationBean.addUrlMappings("/druid/*"); //登录查看信息的账号密码. servletRegistrationBean.addInitParameter("loginUsername", "web"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); return servletRegistrationBean; /** * 注册DruidFilter拦截 * * @return */ @Bean public FilterRegistrationBean duridFilterRegistrationBean() FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); Map<String, String> initParams = new HashMap<String, String>(); // 设置忽略请求 initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"); filterRegistrationBean.setInitParameters(initParams); filterRegistrationBean.addUrlPatterns("/*"); return filterRegistrationBean;
Mapper xml
<select id="pageTest" resultType="com.zns.model.Test">
select id,name from test
</select>
Mapper
public Page<Test> pageTest();
Service
public Page<Test> pageTest()
PageHelper.startPage(1, 10);
return testMapper.pageTest();
Controller
public void testPager()
Page<Test> pageInfo= testService.pageTest();
List<Test> list=pageInfo.getResult();
long totalCount=pageInfo.getTotal();
for (Test test : list)
System.out.println(test.getId()+"--"+test.getName());
System.out.println(totalCount);
以上是关于SpringBoot+Mysql+Mybatis+Mybatis通用mapper+PageHelper整合的主要内容,如果未能解决你的问题,请参考以下文章
springboot+mybatis+Druid配置多数据源(mysql+postgre)
SpringBoot示例教程MySQL与Mybatis基础用法
Springboot第四章 ORM (MyBatis) 操作 MySQL