查看原文
其他

Spring Boot从入门到精通(四)连接MySQL数据库(附源码)

素文宅博客 Java精选 2022-08-09
Spring Boot可以大大简化持久化任务,几乎不需要写SQL语句,本篇讲述一下Spring Boot连接MySQL数据库。
在之前章节“Spring Boot从入门到精通(一)搭建第一个Spring Boot程序”中我们新建了一个Spring Boot应用程序,本章在原有的工程中与MySQL数据库建立连接。

Spring Boot有多种方式与数据库建立连接,包括:使用JdbcTemplate;集成Mybatis等等。下面小编主要是为大家介绍一下如何使用JdbcTemplate和集成Mybatis这两种方式连接数据库。

  使用JdbcTemplate
在pom.xml文件增加如下包的引入,信息如下所示:
<dependency>
<groupId>
mysql</groupId>
<artifactId>
mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot</groupId>
<artifactId>
spring-boot-starter-jdbc</artifactId>
</dependency>
maven项目编译

maven编译项目时报错,信息如下:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0,
Time elapsed: 4.216 s <<< FAILURE! - in
com.yoodb.study.demo02.SpringbootStudyDemo02ApplicationTests
contextLoads Time elapsed: 0.002 s <<< ERROR!

解决方式1:在pom.xml文件增加如下配置信息:

<plugin>
<groupId>
org.apache.maven.plugins</groupId>
<artifactId>
maven-surefire-plugin</artifactId>
<configuration>
<skip>
true</skip>
</configuration>
</plugin>

解决方式2:使用命令参数,如下所示:

mvn install -Dmaven.test.skip=true
IntelliJ IDEA中运行maven安装jar包到本地仓库跳过test,如图所示:
IntelliJ IDEA中新增Maven自定义命令,各个参数含义说明如下:
Name:自定义名称;
Working directory:输入路径;
Command line:命令模式;
Profiles (separated with space):输入相关信息
参考如图所示:
在resource文件夹下application.properties配置文件中增加数据库参数,信息内容如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dba
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=1000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

在com.yoodb.study.demo02包下,新建Controller类测试数据库连接,代码如下:

package com.yoodb.study.demo02;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
import
java.util.Map.Entry;
import
java.util.Set;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.jdbc.core.JdbcTemplate;
import
org.springframework.web.bind.annotation.PathVariable;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
("/jte")
public class JdbcTemplateController {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/getUsers")
public List<Map<String, Object>> getDbType(){
String sql = "select * from boot_user";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
for
(Map<String, Object> map : list) {
Set<Entry<String, Object>> entries = map.entrySet( );
if
(entries != null) {
Iterator<Entry<String, Object>> iterator = entries.iterator( );
while
(iterator.hasNext( )) {
Entry<String, Object> entry =(Entry<String, Object>) iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
System.out.println(key+":"+value);
}
}
}
return list;
}

}

启动Maven项目,输入地址:
http://localhost:8080/jte/getUsers
通过浏览器访问后,返回参数如下:
[{"id":1,
"user_name":"admin",
"password":"e10adc3949ba59abbe56e057f20f883e",
"role_name":"素文宅博客",

"detail":"欢迎关注“Java精选微信公众号,专注程序员推送

一些Java开发知识, 包括基础知识、各大流行框架(Mybatis

SpringSpring Boot等)、大数据技术、(StormHadoop

MapReduceSpark等)、数据库(MysqlOracleNoSQL

算法与数据结构、面试专题、面试技巧经验、职业规划以及优质

开源项目等。其中一部分由小编总结整理,另一部分来源于网络

上优质资源,希望对大家的学习和工作有所帮助。"}]
  集成Mybatis
添加mybatis依赖,在pom.xml文件中增加如下:

<dependency>
<groupId>
org.mybatis.spring.boot</groupId>
<artifactId>
mybatis-spring-boot-starter</artifactId>
<version>
1.0.0</version>
</dependency>

在resource文件夹下application.properties配置文件中增加数据库参数,信息内容如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dba
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=1000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

依次添加mapper的接口类和xml文件

BootUserMapper.java

package com.yoodb.study.demo02.mapper;
import
com.yoodb.study.demo02.bean.BootUser;
import
org.mybatis.spring.annotation.MapperScan;
import
java.util.List;
public interface
BootUserMapper {

List<BootUser> selectAll();
}

BootUserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE
mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace="com.yoodb.study.demo02.mapper.BootUserMapper" >
<resultMap
id="BaseResultMap" type="com.yoodb.study.demo02.bean.BootUser" >
<id
column="id" property="id" jdbcType="VARCHAR" />
<result
column="user_name" property="name" jdbcType="VARCHAR" />
<result
column="detail" property="detail" jdbcType="VARCHAR" />
</resultMap>
<select
id="selectAll" resultMap="BaseResultMap">
select
id, user_name, detail
from boot_user order by detail asc
</select>
</mapper>

BootUser.java

package com.yoodb.study.demo02.bean;
import
java.util.Date;
public class
BootUser {
private String id;
private
String name;
private
String detail;
public
String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDetail() {
return detail;
}

public void setDetail(String detail) {
this.detail = detail;
}
}

BootUserService.java

package com.yoodb.study.demo02.service;
import
java.util.ArrayList;
import
java.util.List;
import
com.yoodb.study.demo02.bean.BootUser;
import
com.yoodb.study.demo02.mapper.BootUserMapper;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service;
@Service
public class BootUserService {

@Autowired
private BootUserMapper mapper;
public
List<BootUser> getUsers(){
return mapper.selectAll();
}
}

BootUserController.java
package com.yoodb.study.demo02;
import
java.util.List;
import
com.yoodb.study.demo02.bean.BootUser;
import
com.yoodb.study.demo02.service.BootUserService;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
("/myt")
public class BootUserController {
@Autowired
private BootUserService service;
@RequestMapping("/getUsers")
public List<BootUser> getUsers() {
List<BootUser> list = service.getUsers();
return
list;
}

}
代码添加到项目中之后,启动Maven项目,通过浏览器访问,地址如下:
http://localhost:8080/myt/getUsers

访问后控制台提示错误信息如下:

org.apache.ibatis.binding.BindingException:
Invalid bound statement (not found):
com.yoodb.study.demo02.mapper.BootUserMapper.selectAll

问题分析在mapper配置文件与接口做映射绑定时出现问题,它所指的就是接口与响应的xml找不到或者是匹配不到。
解决方式就是在pom.xml文件中增加如下配置信息:

<resources>
<resource>
<directory>
src/main/java</directory>
<includes>
<include>
**/*.xml</include>
</includes>
</resource>
</resources>

重新启动Maven项目,输入地址:

http://localhost:8080/myt/getUsers

通过浏览器访问后,返回参数如下:

[{"id":1,
"user_name":"admin",
"password":"e10adc3949ba59abbe56e057f20f883e",
"role_name":"素文宅博客",

"detail":"欢迎关注“Java精选微信公众号,专注程序员推送

一些Java开发知识, 包括基础知识、各大流行框架(Mybatis

SpringSpring Boot等)、大数据技术、(StormHadoop

MapReduceSpark等)、数据库(MysqlOracleNoSQL

算法与数据结构、面试专题、面试技巧经验、职业规划以及优质

开源项目等。其中一部分由小编总结整理,另一部分来源于网络

上优质资源,希望对大家的学习和工作有所帮助。"}]

至此,Spring Boot连接MySQL数据库就说到这里。如果需要项目源码请大家切换至公众号后台输入“Spring Boot从入门到精通”关键词来获取项目源码。大家试一试吧,欢迎评论。

推荐阅读

Spring Boot从入门到精通(三)常用注解含义及用法分析总结

Spring Boot从入门到精通(二)配置GitHub并上传Maven项目

Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

IntelliJ IDEA使用技巧——IDEA常用快捷键01期

IntelliJ IDEA使用技巧——IDEA增加jar包02期

IntelliJ IDEA使用技巧——IDEA工具Debug模式断点调试详解03期

IntelliJ IDEA使用技巧—IDEA设置默认Maven版本04期

IntelliJ IDEA使用技巧—使用EasyCode插件一键生成代码05期

Java面试技巧—面试者简历如何通过初步筛选

浅谈Java后端开发工程师腾讯面试经历分享总结

程序员未来的出路究竟在哪里?一位老码农的心声
更多推荐↓↓↓
 

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql,Hadoop,Dubbo,Spring Boot等,免费领取视频教程、资料文档和项目源码。
Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架、大数据技术、数据库、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。
我就知道你“在看”!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存