mysql和springboot对照_SpringBoot(六) SpirngBoot与Mysql关系型数据库

pom.xml文件的配置

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

runtime

写配置文件

spring.datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8

spring.datasource.username = root

spring.datasource.password = root

spring.datasource.driver-class-name = com.mysql.jdbc.Driver

spring:

datasource:

username: root

password: Welcome_1

url: jdbc:mysql://192.168.179.131:3306/jdbc

driver-class-name: com.mysql.jdbc.Driver

type: com.alibaba.druid.pool.DruidDataSource

# schema:

# - classpath:department.sql

server:

port: 9000

自定义数据源DRUID

spring-boot-starter-jdbc 默认使用tomcat-jdbc数据源,如果你想使用其他的数据源,比如这里使用了阿里巴巴的数据池管理,你应该额外添加以下依赖:

com.alibaba

druid

1.0.19

编写java测试链接代码

@SpringBootApplicationpublic classApplication {public static voidmain(String[] args) {

SpringApplication.run(Application.class, args);

}//destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.

@Bean(destroyMethod = "close")publicDataSource dataSource() {

DruidDataSource dataSource= newDruidDataSource();

dataSource.setUrl(env.getProperty("spring.datasource.url"));

dataSource.setUsername(env.getProperty("spring.datasource.username"));//用户名

dataSource.setPassword(env.getProperty("spring.datasource.password"));//密码

dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));

dataSource.setInitialSize(2);//初始化时建立物理连接的个数

dataSource.setMaxActive(20);//最大连接池数量

dataSource.setMinIdle(0);//最小连接池数量

dataSource.setMaxWait(60000);//获取连接时最大等待时间,单位毫秒。

dataSource.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql

dataSource.setTestOnBorrow(false);//申请连接时执行validationQuery检测连接是否有效

dataSource.setTestWhileIdle(true);//建议配置为true,不影响性能,并且保证安全性。

dataSource.setPoolPreparedStatements(false);//是否缓存preparedStatement,也就是PSCache

returndataSource;

}

}

spring:

datasource:

username: root

password: Welcome_1

url: jdbc:mysql://192.168.179.131:3306/jdbc

driver-class-name: com.mysql.jdbc.Driver

type: com.alibaba.druid.pool.DruidDataSource

# 初始化大小,最小,最大

initialSize: 5

minIdle: 5

maxActive: 20

# 配置获取连接等待超时的时间

maxWait: 60000

# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

timeBetweenEvictionRunsMillis: 60000

# 配置一个连接在池中最小生存的时间,单位是毫秒

minEvictableIdleTimeMillis: 300000

validationQuery: SELECT 1 FROM DUAL

testWhileIdle: true

testOnBorrow: false

testOnReturn: false

poolPreparedStatements: true

# 配置监控统计拦截的filters,去掉监控界面sql无法统计,‘wall’用于防火墙

filters: stat,wall,log4j

maxPoolPreparedStatementPerConnectionSize: 20

userGlobalDataSourceStat: true

# 通过connectProperties属性来打开mergeSql功能;慢SQL记录

connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

# schema:

# - classpath:department.sql

server:

port: 9000

编写测试代码

@Repositorypublic class LearnDaoImpl implementsLearnDao{

@AutowiredprivateJdbcTemplate jdbcTemplate;

@Overridepublic intadd(LearnResouce learnResouce) {return jdbcTemplate.update("insert into learn_resource(author, title,url) values(?, ?, ?)",learnResouce.getAuthor(),learnResouce.getTitle(),learnResouce.getUrl());

}

@Overridepublic Page queryLearnResouceList(Mapparams) {

StringBuffer sql=newStringBuffer();

sql.append("select * from learn_resource where 1=1");if(!StringUtil.isNull((String)params.get("author"))){

sql.append(" and author like '%").append((String)params.get("author")).append("%'");

}if(!StringUtil.isNull((String)params.get("title"))){

sql.append(" and title like '%").append((String)params.get("title")).append("%'");

}

Page page= new Page(sql.toString(), Integer.parseInt(params.get("page").toString()), Integer.parseInt(params.get("rows").toString()), jdbcTemplate);returnpage;

}

}

@Configuration

public class DruidConfig {

@ConfigurationProperties(prefix = "spring.datasource")

@Bean

public DataSource druid(){

return new DruidDataSource();

}

//配置Druid的监控

//1、配置一个管理后台

@Bean

public ServletRegistrationBean statViewServlet(){

ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");

Map initParams =new HashMap<>();

initParams.put("loginUsername", "admin");

initParams.put("loginPassword", "123456");

bean.setInitParameters(initParams);

return bean;

}

//2、配置监控的filter

@Bean

public FilterRegistrationBean webstatFilter(){

FilterRegistrationBean bean = new FilterRegistrationBean();

bean.setFilter(new WebStatFilter());

Map initParams =new HashMap<>();

initParams.put("exclusions", "*.js,*.css,/druid/*");

bean.setInitParameters(initParams);

bean.setUrlPatterns(Arrays.asList("/*"));

return bean;

}

}

访问:localhost:8080/druid/login.html

以上是使用JDBCTemptlate模板,可以参考API文档    JdbcTemplate

SpringBoot整合Mybatis

1.使用注解的方式

导入依赖

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

com.alibaba

druid

1.1.9

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-jdbc

导入配置文件中关于Druid的配置

创建数据表

创建数据库对应的JavaBean,以及getter和setter方法

在配置文件中修改驼峰命名开启 ,不写配置文件就写配置类

mybatis:

configuration:

map-underscore-to-camel-case: true

数据库中以下划线分割,而javabean中以驼峰命名。解决办法

public class MyBatisConfig {

@Bean

public ConfigurationCustomizer configurationCustomizer(){

return new ConfigurationCustomizer() {

@Override

public void customize(Configuration configuration) {

configuration.setMapUnderscoreToCamelCase(true);

}

};

}

}

使用注解方式导入mapper

@MapperScan(value = "com.test.testMapper")

编写测试类(@component注解不添加也没事,只是不加service那边引入mapper的时候会有错误提示,也就是红线,但不影响程序的运行)

@Component

@Mapper

public interface DepartmentMapper {

@Insert("insert into department(dept_name) value(#{deptName})")

public int insertDept(Department department);

@Delete("delete from department where id=#{id}")

public int deleteDeptById(Integer id);

@Update("update department set dept_Name=#{deptName} where id=#{id}")

public int updateDept(Department department);

@Select("select * from department where id=#{id}")

public Department getDeptById(Integer id);

}

配置文件的方式整合Mybatis(xml方式)

新建mybatis的配置文件。

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

新建mapper接口及其方法。

public interface EmployeeMapper {

public Employee getEmpById(Integer id);

public void insetEmp(Employee employee);

}

新建Employee的mapper.xml的映射文件

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from employee where id=#{id}

INSERT INTO employee(last_name,email,gender,d_id) VALUES (#{lastName},#{email},#{gender},#{dId})

修改application.yml配置文件

mybatis:

config-location: classpath:mybatis/mybatis-config.xml

mapper-locations: classpath:mybatis/mapper/*.xml

编写controller类进行测试。更多的mybatis使用查询官方文档。mybatis官方中文参考文档

PageHelper分页插件

导入pom.xml

com.github.pagehelper

pagehelper

x.x.x

例子

//2. use static method startPage

PageHelper.startPage(1, 10);

List list = countryMapper.selectIf(1);//3. use static method offsetPage

PageHelper.offsetPage(1, 10);

List list = countryMapper.selectIf(1);//4. method parameters

public interfaceCountryMapper {

ListselectByPageNumSize(

@Param("user") User user,

@Param("pageNum") intpageNum,

@Param("pageSize") intpageSize);

}//config supportMethodsArguments=true

List list = countryMapper.selectByPageNumSize(user, 1, 10);

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

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

相关文章

python创建数据库计算机积极拒绝、无法连接_Python3 请求网页源码 目标计算机积极拒绝,无法连接...

代码&#xff1a;import urllibfrom urllib.request import urlopenfrom urllib.parse import urlencodeurlhttp://xxx.xxxx.com/ //测试链接resurlopen(url)#通过urlopen方法访问拼接好的urlresres.read().decode()#read()方法是读取返回数据内容&#xff0c;decode是转换返回…

python测试框架untest怎么循环执行_unittest如何在循环遍历一条用例时生成多个测试结果...

引用自:http://blog.csdn.net/kaku21/article/details/42124593参考网址&#xff1a;http://programmaticallyspeaking.com/test-data-provider-using-python-metaclass.html使用TestNG进行测试的时候&#xff0c;允许使用外部数据源来驱动测试方法的执行&#xff0c;举个例子&…

python杨辉三角_yiduobo的每日leetcode 118.杨辉三角 amp;amp; 119.杨辉三角II

祖传的手艺不想丢了&#xff0c;所以按顺序写一个leetcode的题解。计划每日两题&#xff0c;争取不卡题吧。118.杨辉三角https://leetcode-cn.com/problems/pascals-triangle/119.杨辉三角IIhttps://leetcode-cn.com/problems/pascals-triangle-ii/经典的数学题。118题需要求出…

mysql 字段a减字段b_SQL 数据库 如何实现第一行字段A减字段B得到值C,然后再用C减去第二行字段B,以此类推,求高手解答...

select * ,0 as 缺货 into tmp_r from table_1 --创建结果表declare i intdeclare j intdeclare q intselect row_number() over(order by 子件S) as id,子件S,现存量 into #tmp_s from table_1 group by 子件S,现存量 --第一个临时表将子件S列出来set i 1while (i<(select …

python历史背景_python学习之旅1-1(python背景、安装介绍)

一、python介绍1.python历史背景python的创始人为吉多范罗苏姆(Guido van Rossum)。1989年的圣诞节期间&#xff0c;吉多范罗苏姆(中文名字&#xff1a;龟叔)为了在阿姆斯特丹打发时间&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承。1989年&…

mysql使用小技巧_mysql使用小技巧

1&#xff0e;mySql 删除表中大批量的数据假设有一个表(logs)有2000万条记录&#xff0c;我们要在业 务不停止的情况下删除其中status1的所有记录&#xff0c;差不多有1800万条&#xff0c;直接执行 DELETE FROM logs WHERE status1 会发现删除失败&#xff0c;因为lock wait t…

python并行计算_Python并行计算简单实现

multiprocessing包是Python中的多进程管理包.Pool(num)类提供一个进程池,然后在多个核中执行这些进程,其中默认参数num是当前机器CPU的核数.Pool.map(func, iterable[, chunksizeNone])2个参数, 第一个参数是函数, 第二个参数是需要可迭代的变量, 作为参数传递到func如果func含…

为什么链接不上mysql数据库_java链接不上数据库,怎么解决!

居正w去年刚好做过这个&#xff0c;给你贴下我的链接代码try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //加载sqlserver JDBC驱动程序 //Class.forName("org.gjt.mm.mysql.Driver"); System.out.pr…

python transform方法_Python transforms.BboxTransformFrom方法代码示例

# 需要导入模块: from matplotlib import transforms [as 别名]# 或者: from matplotlib.transforms import BboxTransformFrom [as 别名]def _set_lim_and_transforms(self):"""set the *dataLim* and *viewLim*:class:~matplotlib.transforms.Bbox attributes…

java 线程数_在虚拟机中是什么限制java线程数量?这方面涉及哪些调优?

首先要说明一点&#xff0c;Java线程的实现是基于底层系统的线程机制来实现的,程序中开的线程并不全部取决于JVM虚拟机栈&#xff0c;而是取决于CPU&#xff0c;操作系统&#xff0c;其他进程&#xff0c;Java的版本。JVM的线程与计算机本身性能相关。以前写过一个例子&#xf…

世界上最难的视觉图_世界上最长的蛇有多长?四川惊现55米洪荒巨蟒(图)

蛇&#xff0c;一直是站在食物链顶端的致命生物&#xff0c;蟒蛇更是能够吞食人类的恐怖巨兽。网传世界上最长的蛇有500米之长&#xff0c;名为“红海巨蛇”&#xff0c;已被证实为虚假传言&#xff0c;以地球现在的环境是不可能出现如此之大的蛇的。据说四川发现了罕见的55米长…

解析器 java_java 常用的解析工具

这里介绍两种 java 解析工具。第一种&#xff1a;java 解析 html 工具 jsoup第二种&#xff1a; java 解析 XML 工具 Dom4jjsoupjsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API&#xff0c;用于提取和操作数据&#xff0c;使用最好的DOM&#xff0c;CSS和类似…

python执行oracle命令_如何使用cx\U Oracle运行非查询sql命令?

我正在尝试使用cx\U oracle运行以下命令&#xff1a;beginadd_command_pkg.add_command( command_id > 7,expiry_time > sysdate 7);add_command_pkg.add_command( command_id > 12,expiry_time > sysdate 7);commit;end;这是我的Python代码&#xff1a;^{pr2}$当…

java替换特殊字符_Java StringBuffer替换特殊字符

在本实例中为保证学生输入的 Java 文件名合格&#xff0c;将利用 StringBuffer 类实现对 Java 文件名中的特殊符号进行替换&#xff0c;包括将中文状态下的“。”和全角状态下的“.”替换为英文状态下的“.”。在本例实现过程中主要使用了 StringBuffer 类的字符查找和替换方法…

java反射 数组类型_Java反射-数组

通过反射使用数组有时会比较棘手。特别是需要获得一个特定类型数组的Class对象&#xff0c;如int[]等。本文将讨论如何通过反射创建数组和获得他们的Class对象。注意&#xff1a;本文在阅读Eyal Lupu的博客"Two Side Notes About Arrays and Reflection"后已更新&…

python 最快 因式分解_Python实现的对一个数进行因式分解操作示例

本文实例讲述了Python实现的对一个数进行因式分解操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在数学中&#xff0c;我们可能会对一个数进行因式分解&#xff0c;如何用Python来实现呢&#xff1f;以下是某位大佬写的算法&#xff0c;这里拿过来直接用就可以了…

php 比java 快_php比java要快在哪里

php比java要快在哪里一些Java可以做的事情php做不了或者说要借助另外的工具才可以做&#xff0c;要但就开发网站这个事情来说&#xff0c;php确实是要比Java效率高&#xff0c;尤其是相对简单的项目。首先&#xff0c;Java的架构要比Php复杂&#xff0c;先不说各种开发框架&…

斯皮尔曼相关系数_惊艳!JASP相关系数矩阵及热力图

今天起我们新增一个案例数据&#xff0c;犯罪数据。这是mei国50个州关于犯罪率的一组数据&#xff0c;包括人口、面积、收入、文盲率、高中毕业率、霜冻天数、犯罪率共7个指标&#xff0c;现在我们想考察一下州犯罪率和其他因素间的关系。数据视图如下&#xff1a;数据取自《R语…

java io大文件_JavaIO流对大文件进行分割与合并

对于大文件传输不方便时候可以试一下分割之后再操作&#xff1a;package com.lym;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOu…

邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路

题目链接743. 网络延迟时间 题目描述有 N 个网络节点&#xff0c;标记为 1 到 N。给定一个列表 times&#xff0c;表示信号经过有向边的传递时间。 times[i] (u, v, w)&#xff0c;其中 u 是源节点&#xff0c;v 是目标节点&#xff0c; w 是一个信号从源节点传递到目标节点的…