一、介紹
SpringBoot有兩種方法與數據庫建立連接,一種是集成Mybatis,另一種用JdbcTemplate,本文主要討論集成Mybatis方式。
SpringBoot整合Mybatis也有兩種方式,分別為XML配置方式和注解方式,主要優勢點如下:
XML配置方式:隔離sql和業務代碼,清晰表達sql,尤其對於較長的sql。
注解方式:代碼更加精簡,方便。
本文主要討論XML配置方式,后續文章討論注解方式。
二、SpringBoot整合Mybatis連接Mysql數據庫
1、添加MySQL 連接驅動依賴、SpringBoot Mybatis 依賴,完整pom文件如下:
4.0.0
com.example
demo
1.0.0
jar
hello
Demo project for Spring Boot
1.3.0
5.1.39
org.springframework.boot
spring-boot-starter-parent
2.1.1.RELEASE
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
${mysql-connector}
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis-spring-boot}
org.projectlombok
lombok
ch.qos.logback
logback-classic
org.slf4j
jcl-over-slf4j
注:
整合MyBatis的核心依賴MyBatis-Spring-Boot-Starter提供:
自動檢測現有的DataSource
將創建並注冊SqlSessionFactory的實例,該實例使用SqlSessionFactoryBean將該DataSource作為輸入進行傳遞
將創建並注冊從SqlSessionFactory中獲取的SqlSessionTemplate的實例。
自動掃描您的mappers,將它們鏈接到SqlSessionTemplate並將其注冊到Spring上下文,以便將它們注入到您的bean中。
因此,引入該Starter之后,只需要定義一個DataSource即可(application.properties中可配置),它會自動創建使用該DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。會自動掃描你的Mappers,連接到SqlSessionTemplate,並注冊到Spring上下文中。
2、配置application.yml文件
配置數據庫連接信息(數據源)
spring:
#數據源
datasource:
url: jdbc:mysql://localhost:3306/springbootdb??useUnicode=true&characterEncoding=UTF-8
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
配置mybatis
#mybatis配置
mybatis:
typeAliasesPackage: com.example.mybaitsxml.dao.entity
mapperLocations: classpath:mapper/*.xml
#configLocation: classpath:/mybatis-config.xml
注:通常,若mybatis配置信息較少,只是針對基本配置無需復雜配置,則只需在application.yml文件中配置即可,否則最好配置在 mybatis-config.xml中。
3、代碼實現
demo工程文件結構:
controller層
@Slf4j
@RestController
@RequestMapping("/web")public classUserController {
@AutowiredprivateUserService userService;
@GetMapping("/queryAllUsers")public ListqueryAllUsers(){returnuserService.queryAllUsers();
}
}
service層(實現)
@Slf4j
@Servicepublic class UserServiceImpl implementsUserService {
@AutowiredprivateUserMapper userMapper;
@Overridepublic ListqueryAllUsers() {
log.info("/queryAllUsers start...");returnuserMapper.queryAllUsers();
}
}
dao層
dao層分為數據庫實體類(entity)和數據庫操作mapper接口(mapper)
entity:
@Datapublic classUser {privateString name ;privateString sex;privateInteger age;privateInteger classNo;
}
mapper:
public interfaceUserMapper {
ListqueryAllUsers();
}
mapper.xml實現
select
name_,
sex,
age,
class_no
from
tbl_user
4、執行效果
5、Demo源碼
本文示例源碼已托管到本人Github倉庫,有需要的朋友請自行拉取。