[随写笔记]spring boot整合myBatis连接MySql数据库

[随写笔记]spring boot整合myBatis连接MySql数据库


在生成spring boot时需要勾选myBatis,如未勾选则需要在pom.xml导入

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

需要导入mySql的驱动包,本例使用的是mySql8.0.21版本

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

在项目java项目新增一个dao包,在resources下新增一个mybatis文件夹
层级如下

  • java
    • com
      • dao
      • Application.java
  • resources
    • mybatis

打开 application.properties 进行配置数据库
使用的连接池为spring boot默认的 HikariDataSource

# 连接池,使用spring boot默认数据源
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# mySql配置
# 驱动名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mySql8 解决时差问题 serverTimezone=GMT%2B8
# 注:GMT%2B8是解决时差问题,北京时间与格林威治时间相差8个小时
# jdbc:mysql://ip:port/数据库名称?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://localhost:3306/xygg?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
# 用户名、密码
spring.datasource.username=xygg
spring.datasource.password=123456
# 连接池配置
# 池中最大连接数,包括闲置和使用中的连接
spring.datasource.hikari.maximum-pool-size=10
# 池中维护的最小空闲连接数
spring.datasource.hikari.minimum-idle=5
# 等待来自池的连接的最大毫秒数
spring.datasource.hikari.connection-timeout=30000
# 连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置
spring.datasource.hikari.pool-name=myDataSourcePool
# 连接创建后执行的语句,作用于连接测试
spring.datasource.hikari.connection-init-sql=select sysdate() from dual

配置myBatis映射的xml和包路径
包路径为上面创建的dao包路径
映射xml路径为上面创建的mybatis,‘*’号是模糊匹配,统一xml文件名格式(接口名称+Mapper.xml)

# myBatis 配置
# 映射包路径
mybatis.type-aliases-package=com.dao
# 映射xml路径
mybatis.mapper-locations=mybatis/*Mapper.xml

在com.dao包下新增一个接口类
新增一个方法,用于获取mysql数据库中的user表
@Mapper:将mybatis交给spring管理
@Repository:其实使用@Mapper就可以了,增加这个注解只是用来在自动装箱时不出现警告信息

package com.dao;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository // 注入到Bean
@Mapper // 交给spring管理
public interface TestDao {
    List<Map<String,Object>> getUsers();
}

在resources/mybatis目录新增一个空白xml文件,命名为testDaoMapper.xml
在testDaoMapper.xml里增加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属性指定dao接口类

<mapper namespace="com.dao.TestDao">
</mapper>

在mapper标签下新增子标签 select ,id属性为dao接口方法名,resultType为方法返回值类型
特别注意别把resultTyperesultMap弄混
在select标签里写sql查询语句

<select id="getUsers" resultType="java.util.Map">
    select * from user_ordinary
</select>

完整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.dao.TestDao">
    <select id="getUsers" resultType="java.util.Map">
        select * from user_ordinary
    </select>
</mapper>

编写一个测试类进行测试

package com;

import com.dao.TestDao;

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
import java.util.Map;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SqlApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class SqlApplicationTests {


    @Autowired
    TestDao testDao;

   @Test
    void contextLoads() {
       List<Map<String, Object>> users = testDao.getUsers();
       System.out.println(users);
   }

}

[{user_sex=0, user_create_date=2020-08-06 11:21:43.0, user_id=1, user_name=晓宇哥哥, user_age=0, user_pwd=123, user_update_date=2020-08-06 11:21:43.0, user_acc=xygg}]

返回成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值