最近自己写了一个SpringBoot+Mybatis(generator)+druid的demo
1. mybatis+generator逆向工程生成代码
1. pom文件
pom文件添加如下内容,引入generator插件
org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql mysql-connector-java 5.1.35org.mybatis.generator mybatis-generator-core 1.3.5Generate MyBatis Artifactspackagegenerate > 这里是引用 truetruesrc/main/resources/generator/generatorConfig.xml
当pom引入此插件成功的话,idea右侧可以看到
2. 在resources下新建generator文件夹,在generator下新建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
3. 运行插件
4. 生成以下代码
2. application.perperties中的配置
1. mybatis的配置
# mybatis实体类的包路径mybatis.typeAliasesPackage=com.qlu.cloud.pojo# mybatis的dao层方法的实现xmlmybatis.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=falsespring.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-8spring.thymeleaf.cache=false
pom文件中
org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-thymeleaf
== 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或其它可以忽略的级别。 */ @Autowired private 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/下,它的内容为
Title
序号 风机编号 报警时间 30s内温度高于80度次数 最最重要的一点
因为之前在写Mapper的时候(也就是DAO层是生成的,生成的Mapper类中没有使用@Mapper注解,但是每个Mapper中的类要加一个@Mapper注解也很麻烦),所以我们要在启动类上加一个@MapperScan(“com.qlu.cloud.mapper”)来声明@Mapper所在的包即可,启动类一般叫项目名+Application
然后运行项目即可。
实用插件
devtools热部署
每次改完都要重新停止应用,再重新启动很烦~但springboot有个叫热部署的东西,就是说在项目中修改代码可以不用重新停止应用再重新启动,可以自动重启,这里我们用的是devtools
1. pom文件中添加以下内容
org.springframework.boot spring-boot-devtools providedtrue
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"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASEcom.qlu cloud 0.0.1-SNAPSHOTcloudDemo project for Spring Boot1.8com.alibaba fastjson 1.2.6org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-devtools providedtrueorg.mybatis mybatis 3.4.6org.mybatis.spring.boot mybatis-spring-boot-starter 1.2.0mysql mysql-connector-java org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-thymeleaf com.alibaba druid-spring-boot-starter 1.1.9org.springframework.boot spring-boot-maven-plugin org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql mysql-connector-java 5.1.35org.mybatis.generator mybatis-generator-core 1.3.5Generate MyBatis Artifactspackagegeneratetruetruesrc/main/resources/generator/generatorConfig.xml