【创建springboot-maven项目搭建mybatis框架】(超详细)
创始人
2024-02-18 12:23:20
0

目录

1. 创建Spring Boot项目,相关参数

2. 创建数据库

3. 在IntelliJ IDEA中配置Database面板

4. 添加数据库编程的依赖

5. 关于Mybatis框架

6. Mybatis编程:插入相册数据


1. 创建Spring Boot项目,相关参数

项目名称:csmall-product(自己取个名称)

Group:cn.tedu

Artifact:csmall-product

Package:cn.csmall.product

Java版本:1.8

创建项目时勾选的依赖项:无

Spring Boot版本:2.5.9(自行在pom.xml中修改)

2. 创建数据库

登录MySQL客户端,创建mall_pms数据库,命令如下:

create database mall_pms;

 

3. 在IntelliJ IDEA中配置Database面板

 

4. 添加数据库编程的依赖

pom.xml文件的标签内添加:


org.mybatis.spring.bootmybatis-spring-boot-starter2.2.2


mysqlmysql-connector-javaruntime

 当添加数据库编程的依赖项(以上的mybatis-spring-boot-starter)后,无论是测试,还是尝试启动项目,都会报错:

Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties\$DataSourceBeanCreationException: Failed to determine a suitable driver class

这是因为在执行Spring Boot测试,或启动项目时,只要项目中添加了数据库编程的依赖,就会自动读取连接数据库的配置,但是,目前还没有添加这些配置,所以报错!

src/main/resources下的application.properties中添加连接数据库的配置信息,此配置文件是Spring Boot项目默认的主配置文件。

添加的配置信息如下:

# 连接数据库的配置
spring.datasource.url=jdbc:mysql://localhost:3306/mall_pms?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

注意:添加以上配置后,无论是启动项目,还是执行Spring Boot测试,都不会报告错误,但是,本质上只是读取了以上配置,并不代表以上配置是正确的!

可以在Spring Boot测试类中添加测试方法,以检验以上配置是否正确:

@Autowired
DataSource dataSource; // 数据源,导包时使用java.sql包@Test
void getConnection() throws Throwable {dataSource.getConnection(); // 获取与数据库的连接对象,会执行连接到数据库的操作
}

如果配置信息中,连接数据库的URL中的主机名错误,则会出现:

Caused by: java.net.UnknownHostException: localhast

如果配置信息中,连接数据库的端口号错误,导致无法连接上,则会出现:

Caused by: java.net.ConnectException: Connection refused: connect

另外,如果MySQL服务没有启动,也会导致以上错误!

如果配置信息中,数据库名称错误,则会出现:

java.sql.SQLSyntaxErrorException: Unknown database 'm0ll_pms'

如果配置信息中,服务器时区值错误,则会出现:

Caused by: java.time.zone.ZoneRulesException: Unknown time-zone ID: Asia/Beijing

如果配置信息中,连接数据库的用户名或密码错误,则会出现:

java.sql.SQLException: Access denied for user 'root1234'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

5. 关于Mybatis框架

Mybatis框架是主流的用于处理数据库编程的框架,主要用于简化数据库编程。

使用Mybatis框架,除了首次的“一次性”配置以外,主要的代码量在于:设计抽象方法、配置抽象方法映射的SQL语句。

6. Mybatis编程:插入相册数据

插入相册数据需要执行的SQL语句大致是:

insert into pms_album (name, description, sort) values (?, ?, ?)

提示:以上字段列表中,由于pms_album表的id是自动编号的,则不需要写上id字段名,在values部分也不需要写id字段的值。

使用Mybatis时,抽象方法必须设计在接口中,通常,此类接口使用Mapper作为接口名的最后一个单词。

则在项目的根包(创建项目后就已经自动创建好的包)下创建mapper.AlbumMapper接口:

package cn.tedu.csmall.product.mapper;public interface AlbumMapper {
}

 然后,在接口中声明“插入相册数据”的抽象方法,即:

xx  xx(xx);

在使用Mybatis时,如果执行的是增、删、改操作,始终使用int作为返回值类型,表示“受影响的行数”,或者,也可以使用void,但不推荐。

关于方法的名称,阿里巴巴的《Java开发手册》提出了参考:

1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save/insert 做前缀。
5) 删除的方法用 remove/delete 做前缀。
6) 修改的方法用 update 做前缀。

关于参数列表,应该根据SQL语句中的参数来设计,如果需要执行的SQL语句中的参数较多,且具有相关性,应该进行封装,本次需要执行“插入相册数据”,则可以使用“相册”数据的实体类作为参数。

关于MySQL中的字段类型与Java中的数据类型的对应关系:

MySQL中的数据类型Java中的数据类型
tinyint / smallint / intInteger
bigintLong
char / varchar / text系列String
decimalBigDecimal
datetimeLocalDateTime

为了便于编写Xxx类,先在pom.xml中添加lombok依赖:


org.projectlomboklombok1.18.20provided

此依赖项可以通过注解,在编译期生成某些代码,例如:Setters & Getters、hashCode()equals()toString()、无参数构造方法、全参数构造方法等。

在根包下创建pojo.entity.Album类:

package cn.tedu.csmall.product.pojo.entity;import lombok.Data;import java.io.Serializable;
import java.time.LocalDateTime;@Data
public class Album implements Serializable {private Long id;private String name;private String description;private Integer sort;private LocalDateTime gmtCreate;private LocalDateTime gmtModified;}

接下来,在AlbumMapper接口中添加抽象方法:

int insert(Album album);

然后,在src/main/resources下创建mapper文件夹,并在此文件夹中粘贴得到AlbumMapper.xml文件,关于此文件:

  • 根标签必须是
  • 根标签上必须配置namespace属性,取值为对应的接口的全限定名
  • 使用 /  /  /