需要项目demo 可以去我的资源里面下载!
我的项目中get set方法使用了lombok的注解 需要自己在idea中装一下lombok插件
新建一个springboot项目
pom文件添加pagehelper、druid、mybatise 依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
在application.properties中添加数据库 以及连接池的配置
#数据库
spring.datasource.url=jdbc:oracle:thin:@xxxxxxxxxxxxxx
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
## druid连接池的设置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
################## 连接池配置 ################
#连接池建立时创建的初始化连接数
spring.datasource.druid.initial-size=2
#连接池中最大的活跃连接数
spring.datasource.druid.max-active=5
#连接池中最小的活跃连接数
spring.datasource.druid.min-idle=3
#最大空闲连接
spring.datasource.druid.max-idle=3
# 配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
#是否在自动回收超时连接的时候打印连接的超时错误
spring.datasource.druid.log-abandoned=true
#是否自动回收超时连接
spring.datasource.druid.remove-abandoned=true
#超时时间(以秒数为单位)
spring.datasource.druid.remove-abandoned-timeout=180
# 打开PSCache,并且指定每个连接上PSCache的大小
#spring.datasource.druid.pool-prepared-statements=true
#spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#spring.datasource.max-open-prepared-statements= #和上面的等价
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.validation-query-timeout=30000
#是否在获得连接后检测其可用性
spring.datasource.druid.test-on-borrow=true
#是否在连接放回连接池后检测其可用性
spring.datasource.druid.test-on-return=false
#是否在连接空闲一段时间后检测其可用性
spring.datasource.druid.test-while-idle=true
#spring.datasource.time-between-eviction-runs-millis=
#spring.datasource.min-evictable-idle-time-millis=
#spring.datasource.max-evictable-idle-time-millis=
#每隔五分钟检测空闲超过10分钟的连接
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.time-between-eviction-runs-millis=120000
# mybatis
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
# log
logging.path=proglog/backend
debug=false
项目结构
配置druid的监控信息DruidConfig
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Administrator on 2019/7/18.
*/
@Configuration
//@MapperScan(basePackages = "com.example.demo.dao")
public class DruidConfig {
//下面的1和2是配置Druid的监控
//1、配置一个管理后台的Servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");//登录druid监控的账户
initParams.put("loginPassword","admin");//登录druid监控的密码
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");//黑名单的IP
bean.setInitParameters(initParams);
return bean;
}
//2、配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
PageHelper配置
在mybatis-config.xml 中配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
<!--sql语句显示-->
<setting name="logImpl" value="STDOUT_LOGGING" />
<!-- 使全局的映射器启用或禁用缓存。 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<package name="com.example.demo.entity"></package>
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!--指明数据库 4.0.0以后不需要设置此属性-->
<property name="dialect" value="oracle"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="false"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="false"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="false"/><!--页码<=0 查询第一页,页码>=总页数查询最后一页-->
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!--//支持通过 Mapper 接口参数来传递分页参数-->
<property name="supportMethodsArguments" value="false"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="none"/>
</plugin>
</plugins>
</configuration>
我们运用注解进行查询的话需要在application启动类中添加
添加@MapperScan(“com.example.demo.dao”)注解以后,com.example.demo.dao包下面的接口类,在编译之后都会生成相应的实现类
新建xml 和实体bean 和对应的mapper查询接口
标红的地方名字需要对应
方法名字需要跟xml中定义的id保持一致
新建测试的controller
启动项目 进行测试
访问druid监控界面 可以看到连接信息等