springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo

最近自己写了一个SpringBoot+Mybatis(generator)+druid的demo

19f1c8f4e303592247d0956026f3e190.png

1. mybatis+generator逆向工程生成代码

1. pom文件

pom文件添加如下内容,引入generator插件

<!-- mybatis代码生成插件 --><!--如果使用的mysql驱动是6.x的,那就无法生成除Insert以外的方法,使用5.x版本的就可以生成。 --><!--生成的mapper中有insert以外的方法就得用5.x版本的MySQL --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId> mysql</groupId><artifactId> mysql-connector-java</artifactId><version>5.1.35</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency></dependencies><executions><execution><id>Generate MyBatis Artifacts</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允许移动生成的文件 -->> 这里是引用         <verbose>true</verbose><!-- 是否覆盖 --><overwrite>true</overwrite><!-- 配置文件在的位置 --><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile></configuration></plugin>

当pom引入此插件成功的话,idea右侧可以看到

59a024dc9464adc6a853a6e4bc53516f.png

2. 在resources下新建generator文件夹,在generator下新建generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><!--导入属性配置 jdbc配置文件--><properties resource="db.properties"></properties><context id="DB2Tables"    targetRuntime="MyBatis3"><!-- 对于生成的pojo类,添加toString方法 --><plugin type="org.mybatis.generator.plugins.ToStringPlugin" /><commentGenerator><property name="suppressDate" value="true"/><!-- 配置生成注释,默认注释已经修改--><property name="suppressAllComments" value="true"/><!-- 设置编码为UTF-8 --><property name="javaFileEncoding" value="UTF-8" /></commentGenerator><!--数据库链接地址账号密码--><jdbcConnection driverClass="${jdbc.driverClassName}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--生成Model类存放位置--><javaModelGenerator targetPackage="com.qlu.cloud.pojo" targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!--生成映射文件存放位置--><sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--生成Dao类存放位置--><!--客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口--><javaClientGenerator type="XMLMAPPER" targetPackage="com.qlu.cloud.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 手动设置数据库表,根据数据库表来生成对应的pojo、mapper --><table tableName="dir" domainObjectName="Directory" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="recode" domainObjectName="Recode" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="file" domainObjectName="File" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table></context>
</generatorConfiguration>

3. 运行插件

55716f6381acb96341e90d1d2cd93f27.png

4. 生成以下代码

41ae10989b36285c360972e09bff7980.png

2. application.perperties中的配置

1. mybatis的配置

# mybatis实体类的包路径
mybatis.typeAliasesPackage=com.qlu.cloud.pojo
# mybatis的dao层方法的实现xml
mybatis.mapper-locations: classpath:mapper/*.xml

2. druid的配置

# 连接数据库的设置,SpringBoot会自动扫描这些
# 连接数据库的驱动名字,自6.x版本就换了名字
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/hadoop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username = rootspring.datasource.password = root# 初始化时建立物理连接的个数spring.datasource.druid.initial-size=5
# 最大连接池数量spring.datasource.druid.max-active=30
# 最小连接池数量spring.datasource.druid.min-idle=5
# 获取连接时最大等待时间,单位毫秒spring.datasource.druid.max-wait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.druid.time-between-eviction-runs-millis=60000
# 连接保持空闲而不被驱逐的最小时间spring.datasource.druid.min-evictable-idle-time-millis=300000
# 用来检测连接是否有效的sql,要求是一个查询语句spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
spring.datasource.druid.test-while-idle=true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。spring.datasource.druid.test-on-borrow=false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。spring.datasource.druid.test-on-return=false
# 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。spring.datasource.druid.pool-prepared-statements=true
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=50
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计spring.datasource.druid.filters=stat,wall# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# 合并多个DruidDataSource的监控数据spring.datasource.druid.use-global-data-source-stat=true
# druid连接池监控spring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=123
# 排除一些静态资源,以提高效率spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*

3. thymeleaf的配置

thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模板引擎。它可以完全替代 JSP 。

thymeleaf的使用

application.propertites中的配置

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTMLspring.thymeleaf.encoding=utf-8
spring.thymeleaf.cache=false

pom文件中

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 页面跳转--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

== thymeleaf下的return “start”;即为跳转到start.html界面,前提是这个文件在配置文件下配置的/templates/下,他的意思是动态。==

3. 执行

接下来就可以写controller层来执行函数了

package com.qlu.cloud.controller;
import com.qlu.cloud.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("a")
public class demoController  {    /*** auto scan配置* 在编辑情况下,无法找不到对应的bean* 于是提示找不到对应bean的错误。* 常见于mybatis的mapper** 解决办法:降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略的级别。*/@Autowiredprivate UserMapper userMapper;    @RequestMapping("show")public String show(Model model){        model.addAttribute("info",userMapper.selectByPrimaryKey(1));return "start";}}

其实controller层的注解我是采用了之前SSM框架的写法,其实这里有一个注解@RestController,它=@Controller+@ResponseBody,表示返回的是json

这里我们用model返回了一个类,然后跳转到了start.html界面,在start.html界面展示数据start.html在/templates/下,它的内容为

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<table border="2" align="center"><!--使用IDE集成thymeleaf 时,在IDE中总是显示红色的波浪线看着就快有强迫症了,于是打算解决一下。主要是IDE的检查,不支持那些标签。第一种,加注释解决第二种:setting关闭inspections的检查打开IDE的file->setting->左上角搜索inspections然后在右边的搜索栏输入thy,将Expression variables validation的√去掉,然后点击确定。--><tr><td>序号</td><td>风机编号</td><td>报警时间</td><td>30s内温度高于80度次数</td></tr><!--/*@thymesVar id="info" type="com.qlu.cloud.pojo.User"*/--><tr th:each ="i:${info}"><td th:text = "${i.userId}"></td><td th:text = "${i.userPass}"></td><td th:text = "${i.userMail}"></td><td th:text = "${i.displayName}"></td></tr>
</table>
</body>
</html>
最最重要的一点

因为之前在写Mapper的时候(也就是DAO层是生成的,生成的Mapper类中没有使用@Mapper注解,但是每个Mapper中的类要加一个@Mapper注解也很麻烦),所以我们要在启动类上加一个@MapperScan(“com.qlu.cloud.mapper”)来声明@Mapper所在的包即可,启动类一般叫项目名+Application

然后运行项目即可。

实用插件

devtools热部署

每次改完都要重新停止应用,再重新启动很烦~但springboot有个叫热部署的东西,就是说在项目中修改代码可以不用重新停止应用再重新启动,可以自动重启,这里我们用的是devtools

1. pom文件中添加以下内容

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>provided</scope><optional>true</optional></dependency>

2. 勾选setting->Build,Execution,Deployment->Compiler->Build project automatically

3. Ctrl+Shift+Alt+/ -> 选择Registry… -> 勾选compiler.automake.allow.when.app.running

4. 重启项目即可

最后附上完整的pom文件

<?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><!--添加“parent”标签里的内容后“spring-boot-starter-parent”会为开发者提供常用jar的版本管理所以我们不需要指定版本,使用人家提供好的就可以了。当然,指定也是可以的,这会覆盖官方默认的版本,不推荐。--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.qlu</groupId><artifactId>cloud</artifactId><version>0.0.1-SNAPSHOT</version><name>cloud</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 每次改完都要重新停止应用,再重新启动很烦~但springboot有个叫热部署的东西,就是说在项目中修改代码可以不用重新停止应用再重新启动,可以自动重启,这里我们用的是devtools--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>provided</scope><optional>true</optional></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 页面跳转--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency></dependencies><build><plugins><!-- Spring Boot包含一个Maven插件,可以将项目打包为可执行jar。--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- mybatis代码生成插件 --><!--MG的插件--><!--如果使用的mysql驱动是6.x的,那就无法生成,使用5.x版本的就可以生成。 --><!--生成的mapper中有insert以外的方法就得用5.x版本的MySQL --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId> mysql</groupId><artifactId> mysql-connector-java</artifactId><version>5.1.35</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency></dependencies><executions><execution><id>Generate MyBatis Artifacts</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允许移动生成的文件 --><verbose>true</verbose><!-- 是否覆盖 --><overwrite>true</overwrite><!-- 自动生成的配置 --><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile></configuration></plugin></plugins></build>
</project>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点|世界流行的十大机械工程设计软件,你会用几种?

来源&#xff1a;自机械前线机械设计是机械生产的第一步&#xff0c;是决定机械性能的最主要的因素。为了满足机械产品性能的高要求&#xff0c;在机械设计中大量采用计算机技术进行辅助设计和系统分析&#xff0c;以下是目前世界上流行的十款式机械工程设计软件。1、Autodesk …

SpaceX再发射58颗星链卫星 总数达到538颗

来源&#xff1a;网易智能据外媒报道&#xff0c;在距离上次星链&#xff08;Starlink&#xff09;卫星发射仅仅10天后&#xff0c;美国太空探索技术公司SpaceX于当地时间周六再次发射了最新一批星链卫星。与以往每批发射60颗星链卫星不同的是&#xff0c;SpaceX此次只发射了58…

MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)(转)

阅读目录 一、MVC原理解析 1、MVC原理二、HttpHandler 1、HttpHandler、IHttpHandler、MvcHandler的说明2、IHttpHandler解析3、MvcHandler解析三、HttpModule 1、HttpModule能干什么2、HttpModule的使用3、HttpModule和HttpHandler如何区分4、UrlRoutingModule解析 四、总结正…

python中的画布背景设置_教你用python画图—Turtle详细教程

Turtle模块绝对是吸引非专业代码开发者人员学习python入门的好工具通过turtle几行代码的执行软件就会画出漂亮的图形&#xff0c;美观而且有成就感&#xff0c;这样一下子对python编程就产生了兴趣。这些漂亮的图形如三角形、五角星、机器猫等。在写代码的时候改变几个参数&…

城市大脑,是工程问题,但首先是基础科学问题

2020年&#xff0c;在5G&#xff0c;大数据&#xff0c;人工智能、区块链、新基建等一轮轮科技浪潮下&#xff0c;城市大脑开始逐步成为新的城市建设和前沿科技热点。到2020年6月已经有近500多个城市宣布建设“城市大脑”&#xff0c;包括阿里&#xff0c;华为&#xff0c;百度…

JOptionPane弹框常用实例

最近在做swing程序中遇到使用消息提示框的&#xff0c;JOptionPane类其中封装了很多的方法。 很方便的&#xff0c;于是就简单的整理了一下。 1.1 showMessageDialog 显示一个带有OK 按钮的模态对话框。 下面是几个使用showMessageDialog 的例子&#xff1a; Java代码 JOption…

从5G到6G的思考:需求、挑战、技术趋势

来源&#xff1a;5G作者&#xff1a;易芝玲&#xff1a;中国移动首席科学家。王森&#xff0c;韩双锋&#xff0c;崔春风&#xff1a;中国移动通信研究院。王亚峰&#xff1a;北京邮电大学信息与通信工程学院。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测…

VS2017C++单元测试

0、欢迎食用 希望对点进来的你有所帮助。全文记流水账&#xff0c;内心想法如示例项目名称。1、建立需测试的项目 新建项目正常书写.h 和.cpp文件2、新建单元测试 右击解决方案 -> 添加 -> 新建项目 Visual C -> 测试 -> 本机单元测试项目点击确定出现3、添加被测项…

ncf 推荐系统_浅析神经协同过滤NCF在推荐系统的应用

NCF在推荐领域应用背景CF&#xff0c;也就是协同过滤&#xff0c;在推荐领域有极其广泛的应用&#xff0c;应该没有谁的智能推荐系统是没用到过CF的。CF其实就是挖掘user和item的交互关系&#xff0c;然后生成I2I或者U2I表示向量。传统的CF从数学角度上还是偏行为统计计算的&am…

2020身高体重标准表儿童_2020年儿童标准体重表出炉!过胖影响发育!(附身高体重标准表)...

近年来&#xff0c;孩子们长胖的趋势越来越明显&#xff0c;一些疾病也有年轻化的趋势。很多家长们平时也很注意饮食搭配和运动&#xff0c;但孩子还是一不小心就“超重”了&#xff0c;真的防不胜防。相信和我一样担忧孩子家长肯定不少。今天就来和大家讲讲&#xff0c;关于孩…

游戏的未来是什么?

“我们还没有真正跨过VR 1.0&#xff0c;无绳VR要么不可靠要么非常贵。我们正在朝VR 2.0发展&#xff0c;用的是眼球追踪&#xff0c;有更大的视野、更高的分辨率、更好的音频和六个自由度&#xff0c;但这些领域仍需要进一步研究。”来源丨Forbes作者丨Matt Gardner编译丨科技…

AI仿生:人类进化新可能

来源&#xff1a; 脑极体看过《银翼杀手》这部开创赛博朋克风格科幻电影的人&#xff0c;一定会对电影中仿生人罗伊贝蒂印象深刻&#xff0c;尤其是电影结尾时反派男主在滂沱大雨中的临终独白&#xff1a;我目睹过你们绝对不会相信的东西&#xff1a;战舰在猎户星座的边缘燃烧&…

python 获取 字典中的指定键_python中字典方法的详细教程

上篇文章讲到了python字典的基础知识&#xff0c;今天继续python中哈希(字典的应用)方法的应用。前章回顾&#xff1a;python字典的应用及案例分析字典方法&#xff1a;dict.clear() 删出字典内所有的元素。dict.copy() 返回字典的一个浅复制。dict.fromkeys(seq[,val]):创建一…

事务基本信息

一、事务的定义 事务&#xff08;Transaction&#xff09;是由一系列对系统数据进行访问与更新的操作所组成的一个程序执行逻辑单元&#xff08;Unit&#xff09;&#xff0c;侠义上的事务特质数据库事务。1&#xff09;当多个应用程序并发访问数据库时&#xff0c;事务可以在这…

android 人脸识别_小模型,高精度!小视科技推出极致轻量型人脸识别SDK

AI 落地为王时代的到来&#xff0c;使得人脸识别的精度和速度备受人们关注。近年来&#xff0c;随着模型压缩、量化技术的进步&#xff0c;模型运行速度也越来越快。对于一些特定的人脸检测任务&#xff0c;轻量型的人脸识别SDK即可满足需求。▲图源网络轻量级架构的显著特征便…

机器视觉基础知识详解

来源&#xff1a;工业机器人随着工业4.0时代的到来&#xff0c;机器视觉在智能制造业领域的作用越来越重要&#xff0c;为了能让更多用户获取机器视觉的相关基础知识&#xff0c;包括机器视觉技术是如何工作的、它为什么是实现流程自动化和质量改进的正确选择等。小编为你准备了…

截屏没有了_华为手机居然有6种截屏花招,很多人不知道,你会用哪几种?

华为手机越来越受国民的欢迎&#xff0c;而且华为手机的功能挺多挺实用的。就比如&#xff1a;支持画“一”进行分屏操作&#xff0c;可以让我们一边追剧一边聊天&#xff0c;真的特别方便。我使用华为手机也已经有三个年头了&#xff0c;在日常生活中看到一些有用的内容&#…

科技巨头纷纷从刷脸转向“刷手”,指纹如何扛起生物识别大旗?

来源&#xff1a;CSDN日前&#xff0c;IBM 高调宣布不再提供任何人脸识别服务和人脸分析软件及不再继续研发相关技术&#xff0c;正式退出市场。紧随其后&#xff0c;亚马逊也宣布&#xff0c;将暂停警方使用其人脸识别技术一年&#xff0c;转向扫描手掌特征来识别用户身份。人…

宜春万申智能装备携粉体自动化产线解决方案盛装亮相2024济南生物发酵展

宜春万申智能装备股份有限公司受邀盛装亮相2024第12届济南国际生物发酵展 展位号&#xff1a;1号馆A16-2展位 2024第12届国际生物发酵产品与技术装备展览会&#xff08;济南&#xff09;于3月5-7日在山东国际会展中心盛大召开&#xff0c;全方面展示&#xff1a;生物发酵、生…

浙大绘制首个地球微生物“社会关系”网络

来源&#xff1a;浙江大学图片由课题组提供单个微生物看不见、摸不着&#xff0c;但却无时不在、无处不在。但微生物的功能绝非“分解者”这么简单&#xff0c;影响到温室气体的、绿色生产的、人体健康的方方面面&#xff0c;其群落组成和功能具有极高的复杂性。如何更好认识微…