首先我们先新建一个项目,需要选择以下依赖:
1、在pom文件中加入druid连接池场景启动器,如下所示:
<!-- druid 场景启动器 --><dependency> <groupid>com.alibaba</groupid> <artifactid>druid-spring-boot-starter</artifactid> <version>1.2.3</version></dependency>
2、在全局配置类中添加以下配置:
spring: # application: # name: dev-manager datasource: # 配置数据源类型 type: com.alibaba.druid.pool.druiddatasource driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://localhost:3306/springboot_mybatis?uunicode=true&characterencoding=utf-8 urname: root password: root # 初始化,最小,最大连接数 initialsize: 3 minidle: 3 maxactive: 18 # 获取数据库连接等待的超时时间 maxwait: 60000 # 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒 timebetweenevictionrunsmillis: 60000 validationquery: lect 1 from dual # 配置监控统计拦截的filters,去掉后,监控界面的sql无法统计 # filters: stat,wall,log4j # 初始化时运行sql脚本 schema: classpath:sql/schema.sql initialization-mode: always druid: stat-view-rvlet: enabled: true
3、这个时候druid的数据链接其实是已经链接上了,下来我们可以配置一些druid的监控,先分析一下,在自动配置类中引入的druidstatviewrvletconfiguration就是监控的,可以生成一个监控界面。
@configuration@conditionalonclass({druiddatasource.class})@autoconfigurebefore({datasourceautoconfiguration.class})@enableconfigurationproperties({druidstatproperties.class, datasourceproperties.class})// druidstatviewrvletconfiguration 是配置监控的类@import({druidspringaopconfiguration.class, druidstatviewrvletconfiguration.class, druidwebstatfilterconfiguration.class, druidfilterconfiguration.class})public class druiddatasourceautoconfigure {}
4、当我们点击进入druidstatviewrvletconfiguration 类的时候,会发现当我们在全局配置文件中没有配置spring.datasource.druid.stat-view-rvlet.enabled配置的时候,这个类将不生效,监控界面也就无法起来,代码如下:
@conditionalonwebapplication@conditionalonproperty( name = {"spring.datasource.druid.stat-view-rvlet.enabled"}, havingvalue = "true")public class druidstatviewrvletconfiguration {}
5、我们先不要在全局配置里面配置上面的属性,进入地址 http://localhost:8080/druid/login.html ,就会打不开,如下所示:
6、下面我们在全局配置文件中配置了这个配置之后,然后再打开监控的网站页面,如下所示:
spring: datasource:druid: stat-view-rvlet: enabled: true
7、依据于druidstatviewrvletconfiguration类的下面代码,我们就可以类似的加一些其它的配置,就比如登录名密码什么的,代码如下:
application.yml配置
druid: stat-view-rvlet: enabled: true login-urname: root login-password: 123
1、在pom文件中引入mybatis-generator插件,代码如下所示:
<!-- mybatis-generator插件,自动生成代码 --><plugin> <groupid>org.mybatis.generator</groupid> <artifactid>mybatis-generator-maven-plugin</artifactid> <version>1.3.2</version> <configuration> <configurationfile>${project.badir}/src/main/resources/generatorconfig.xml</configurationfile> <overwrite>true</overwrite> <verbo>true</verbo> </configuration> <dependencies> <!-- 必须要引入数据库驱动 --> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <!-- 必须要指定相应的版本 --> <version>8.0.22</version> </dependency> </dependencies></plugin>
2、加入上面引入的generatorconfig.xml文件,代码示例如下:
<?xml version="1.0" encoding="utf-8"?><!doctype generatorconfiguration public "-//mybatis.org//dtd mybatis generator configuration 1.0//en" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorconfiguration> <!--数据库驱动 使用dos命令时,需要配置数据库驱动 --> <!--<classpathentry location="d:\java\apache-maven-3.5.4\repository\mysql\mysql-connector-java.0.15\mysql-connector-java-8.0.15.jar"/>--> <!-- context配置上下文,配置生成规则 id 任意写 mybatis3dynamicsql 默认的,会生成带动态sql的crud mybatis3 生成通用的查询,可以指定动态where的条件 mybatis3simple 只生成简单的crud <context id="context" targetruntime="mybatis3simple"> <!-- 注释生成器 --> <!--<commentgenerator> <property name="suppressdate" value="true"/> <property name="suppressallcomments" value="true"/> </commentgenerator>--> <!--数据库链接地址账号密码--> <jdbcconnection dri喜帖街歌词verclass="com.mysql.cj.jdbc.driver" connectionurl="jdbc:mysql://localhost:3306/springboot_mybatis?rvertimezone=utc" urid="root" password="root"> </jdbcconnection> <javatyperesolver> <!--<property name="forcebigdecimals" value="fal"/>--> </javatyperesolver> <!--生成model类存放位置 targetpackage 生成到哪个包下 targetproject 生成到当前文件的哪个对应路径下 <javamodelol世界总决赛lgenerator targetpackage="cool.ale.pojo" targetproject="src/main/java"> <!--<property name="enablesubpackages" value="true"/> <property name="trimstrings" value="true"/>--> </javamodelgenerator> <!--生成映射文件存放位置 <sqlmapgenerator targetpackage="cool.ale.mapper" targetproject="src/main/resources"> <!--<property name="enablesubpackages" value="true"/>--> </sqlmapgenerator> <!--生成dao类存放位置 type 指定生成的方式 1、使用注解的方式生成 2、使用接口绑定的方式生成(一定要配置sqlmapgenerator) <javaclientgenerator type="xmlmapper" targetpackage="cool.ale.mapper" targetproject="src/main/java"> </javaclientgenerator> <!--生成对应表及类名 domainobjectname 对应的实体类的名字 mappername 对应的mapper接口以及mapper.xml文件的名字--> <table tablename="emp" domainobjectname="emp"></table> <table tablename="dept" domainobjectname="dept"></table> </context></generatorconfiguration>
3、找到maven中这个插件,双击运行
1、在pom文件中引入mybatis和mysql的依赖,代码如下所示:
<!-- mybatis连接池,是mybatis自己提供 --><dependency> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> <version>2.2.0</version></dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <scope>runtime</scope>
2、在全局配置文件里面配置mapper-location的路径,指定mapper.xml文件在哪
# 设置mybatis的mapper-locationmybatis: mapper-locations: classpath:cool/ale/mapper/*mapper.xml
3、在springboot启动类的地方指定mapper接口的路径,如下所示:
@mapperscan("cool.ale.mapper")public class springbootmybatisapplication { public static void main(string[] args) { springapplication.run(springbootmybatisapplication.class, args); }}
4、写一个controller来测试刚才生成的crud代码:
package cool.ale.controller;import cool.ale.mapper.empmapper;import cool.ale.pojo.emp;import org.springframework.beans.factory.annotation.autowired;import org.springframework.web.bind.annotation.requestmapping;import org.springframework.web.bind.annotation.restcontroller;import java.util.list;@restcontroller@requestmapping("/emp")public class empcontroller { @autowired private empmapper empmapper; @requestmapping("/all") public list<emp> lectall(){ return empmapper.lectall(); }}
5、成功截图如下:
1、在pom文件中加入依赖:
<!-- 缺少 druid 连接池 --><dependency> <groupid>com.alibaba</groupid> <artifactid>druid</artifactid> <version>1.2.3</version></dependency>
2、全局配置里面配置:
spring: # application: # name: dev-manager datasource: # 配置数据源类型 type: com.alibaba.druid.pool.druiddatasource driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://localhost:3306/springboot_mybatis?uunicode=true&characterencoding=utf-8 urname: root password: root # 初始化,最小,最大连接数 initialsize: 3 minidle: 3 maxactive: 18 # 获取数据库连接等待的超时时间 maxwait: 60000 # 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒 timebetweenevictionrunsmillis: 60000 validationquery: lect 1 from dual # 配置监控统计两代电力公司拦截的filters,去掉后,监控界面的sql无法统计 # filters: stat,wall,log4j # 初始化时运行sql脚本 schema: classpath:sql/schema.sql initialization-mode: always
3、书写配置类,其实和刚才我们进入jar包写的方法差不多,代码如下:
package cool.ale.config;import com.alibaba.druid.pool.druiddatasource;import com.alibaba.druid.support.http.statviewrvlet;import com.alibaba.druid.support.http.webstatfilter;import org.springframework.boot.autoconfigure.condition.conditionalonproperty;import org.springframework.boot.context.properties.configurationproperties;import org.springframework.boot.web.rvlet.filterregistrationbean;import org.springframework.boot.web.rvlet.rvletregistrationbean;import org.springframework.context.annotation.bean;import javax.sql.datasource;@configuration// 当我们的全局配置文件配置了 spring.datasource.type 属性时,这个类才生效@conditionalonproperty("spring.datasource.type")public class druidconfiguration { @bean // 会绑定 application.yml 所有的 spring.datasource 开头的配置绑定到 datasource @configurationproperties("spring.datasource") public datasource datasource(){ return new druiddatasource(); } /*// 第二种办法 public datasource datasource(datasourceproperties properties){ // 根据配置动态创建一个 datasource return properties.initializedatasourcebuilder().build(); }*/ /** * 监控台的 rvlet */ public rvletregistrationbean statviewrvlet() { rvletregistrationbean rvletregistrationbean = new rvletregistrationbean(); rvletregistrationbean.trvlet(new statviewrvlet()); // 设置了这个属性之后,我们就可以通过 druid 地址去访问 druid 的一个监控台 // 比如:http://localhost:8080/druid/login.html rvletregistrationbean.addurlmappings("/druid/*"); // 添加ip白名单 rvletregistrationbean.addinitparameter("allow","127.0.0.1"); // 添加ip黑名单,当白名单和黑名单重复时,黑名单优先级更高 rvletregistrationbean.addinitpwhat引导什么从句arameter("deny","127.0.0.1"); // 添加控制台管理用户 rvletregistrationbean.addinitparameter("loginurname","admin"); rvletregistrationbean.addinitparameter("loginpassword","123456"); // 是否能够重置数据 rvletregistrationbean.addinitparameter("retenable","fal"); return rvletregistrationbean; * 配置服务过滤器:监控哪些访问 * * @return 返回过滤器的配置对象 public filterregistrationbean statfilter() { filterregistrationbean filterregistrationbean = new filterregistrationbean(new webstatfilter()); // 添加过滤器规则,所有的请求都会被拦截 filterregistrationbean.addurlpatterns("/*"); // 忽略过滤格式 filterregistrationbean.addinitparameter("exclusions","*.js,*.gif,*.jpg,/druid/*"); return filterregistrationbean;}
@bean@conditionalonmissingbeanpublic sqlssionfactory sqlssionfactory(datasource datasource) throws exception { sqlssionfactorybean factory = new sqlssionfactorybean(); factory.tdatasource(datasource); factory.tvfs(springbootvfs.class); // 设置mybatis的全局配置文件 if (stringutils.hastext(this.properties.getconfiglocation())) { factory.tconfiglocation(this.resourceloader.getresource(this.properties.getconfiglocation())); }// 有另一种定制方法的体现// 里面有一些关于mybatis全局配置文件的tting的实现 this.applyconfiguration(factory); if (this.properties.getconfigurationproperties() != null) { factory.tconfigurationproperties(this.properties.getconfigurationproperties());// mybatis的插件拦截器,// 我们只需要实现了一个interceptor接口的拦截器注入到ioc容器中,就可以起作用 if (!objectutils.impty(this.interceptors)) { factory.tplugins(this.interceptors);// 设置数据库厂商id if (this.databaidprovider != null) { factory.tdatabaidprovider(this.databaidprovider);// 去application.yml去找typealiaspackage属性,设置别名使用 if (stringutils.haslength(this.properties.gettypealiaspackage())) { factory.ttypealiaspackage(this.properties.gettypealiaspackage());// 根据父类给子类设置别名// 去application.yml找aliassupertype属性 if (this.properties.gettypealiassupertype() != null) { factory.ttypealiassupertype(this.properties.gettypealiassupertype());// 通过包设置类型处理器 if (stringutils.haslength(this.properties.gettypehandlerspackage())) { factory.ttypehandlerspackage(this.properties.gettypehandlerspackage());// 通过类设置类型处理器 if (!objectutils.impty(this.typehandlers)) { factory.ttypehandlers(this.typehandlers);// 设置mapper-location if (!objectutils.impty(this.properties.resolvemapperlocations())) { factory.tmapperlocations(this.properties.resolvemapperlocations()); t<string> factorypropertynames = (t)stream.of((new beanwrapperimpl(sqlssionfactorybean.class)).getpropertydescriptors()).map(featuredescriptor::getname).collect(collectors.tot()); class<? extends languagedriver> defaultlanguagedriver = this.properties.getdefaultscriptinglanguagedriver(); if (factorypropertynames.contains("scriptinglanguagedrivers") && !objectutils.impty(this.languagedrivers)) { factory.tscriptinglanguagedrivers(this.languagedrivers); if (defaultlanguagedriver == null && this.languagedrivers.length == 1) { defaultlanguagedriver = this.languagedrivers[0].getclass(); } if (factorypropertynames.contains("defaultscriptinglanguagedriver")) { factory.tdefaultscriptinglanguagedriver(defaultlanguagedriver); return factory.getobject();}
注意:但是上面的applyconfiguration方法点开之后我们会发现一个问题,要想定制mybatis的全局配置中的ttings,只有下面两种方法。
1、直接在springboot的全局配置文件里面指定mybatis的全局配置文件
2、在springboot的全局配置文件配置configuration + 实现这个configurationcustomizer类
private void applyconfiguration(sqlssionfactorybean factory) { org.apache.ibatis.ssion.configuration configuration = this.properties.getconfiguration(); // 当没有配置configuration 但是指定了mybatis的全局配置文件 if (configuration == null && !stringutils.hastext(this.properties.getconfiglocation())) { configuration = new org.apache.ibatis.ssion.configuration(); }// 当配置了configuration 并且实现了configurationcustomizer类 if (configuration != null && !collectionutils.impty(this.configurationcustomizers)) { iterator var3 = this.configurationcustomizers.iterator(); while(var3.hasnext()) { configurationcustomizer customizer = (configurationcustomizer)var3.next(); customizer.customize(configuration); } factory.tconfiguration(configuration);}
到此这篇关于springboot集成mybatis并测试的文章就介绍到这了,更多相关springboot集成mybatis内容请搜索www.887551.com以中国气候类型图前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 22:53:21,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/e52eaa89661bf116469536d850be59a1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:SpringBoot集成Mybatis并测试.doc
本文 PDF 下载地址:SpringBoot集成Mybatis并测试.pdf
留言与评论(共有 0 条评论) |