tips:后面还会为工程植入更多的组件,大家看完请帮忙三连~~谢谢大家,后续大家也可以将本工程保存为骨架工程使用。或者大家有什么想要看的组件集成也可以私信我,谢谢~~~
现在绝大多数的项目采用的是mysql数据库。
mysql在spring-boot项目中一般使用mybatis框架,下面介绍spring-boot项目如何整合mysql数据库和mybatis框架。
(spring-boot项目的创建,可以看上期介绍)
1.在spring-boot项目的pom.xml中加入mysql和mybais相关架包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
完整pom.xml如下
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.将application.propertis配置文件改为application.yml,并加入数据库相关配置。(按照自己的数据库用户名密码和库名配置)
spring:
datasource:
username: root
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
3.创建数据查询的mapper.java和mapper.xml
我将mapper.java放在了com.example.demo.mapper目录下,将mapper.xml放在了resource/mybatis-mappers下
package com.example.demo.mapper;
import com.example.demo.bean.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author 86186
*/
@Mapper
public interface UserInfoMapper {
List<UserInfo> selectAllUser();
}
<?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.example.demo.mapper.UserInfoMapper">
<resultMap id="BaseResultMap" type="com.example.demo.bean.UserInfo">
<id column="user_id" jdbcType="INTEGER" property="userId" />
<result column="phonenumber" jdbcType="VARCHAR" property="phonenumber" />
<result column="login_ip" jdbcType="VARCHAR" property="loginIp" />
<result column="login_date" jdbcType="TIMESTAMP" property="loginDate" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
user_id,phonenumber,login_ip,login_date,create_time
</sql>
<select id="selectAllUser" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_info
</select>
</mapper>
4.在yml配置文件中配置读取sql.xml的文件位置
mybatis:
mapper-locations: classpath:mybatis-mappers/*.xml
type-aliases-package: com.hw.springbootmybatisxml.entity
5.在启动类中指定mapperScan
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = {"com.example.demo.mapper"})
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
6.新建一个controller,并在controller中调用mapper读取数据
package com.example.demo.controller;
import com.example.demo.bean.UserInfo;
import com.example.demo.mapper.UserInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author 86186
*/
@RestController
@RequestMapping("/user")
public class UserInfoController {
@Autowired
UserInfoMapper userInfoMapper;
@GetMapping("/queryAllUser")
public Object queryAllUser(){
List<UserInfo> userInfoList = userInfoMapper.selectAllUser();
return userInfoList;
}
}
7.启动项目,访问地址,查看信息。
遇到的问题分享
1.在一开始配置过程中,一直报Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.这个问题,找了很多资料,尝试了很多方法,都无法解决。后来将propertis配置文件换成yml配置文件重新配置就好了
2.在后面的运行过程中还发现一个这个问题Invalid bound statement (not found): …… with root cause。后来发现是配置文件中的mybatis相关配置写错了(网上绝大多数的教程都是讲mapper.java和mapper,xml不匹配或者mapper.xml写的不正确导致)