springboot初探——集成mybatis

1.首先創建一個springboot工程

創建的方式有很多,常見是以下兩種

  1. 訪問https://start.spring.io/選擇相關版本,下載一個空工程
  2. 利用ide帶的功能直接創建springboot項目,不管是idea還是eclipse都有相關插件

這裏不關注打包方式等,刪掉了一些導出時的標籤,並不影響本地使用。剛剛創建完的項目,pom是這個樣子的

<?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.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.gy</groupId>
    <artifactId>mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mybatis</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.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

注意一下項目名,copy是需要注意改成自己的

2.添加相關依賴

既然使用裏springboot構建項目,爲了方便配置,肯定要引入mybatis-spring-boot-starter,同時這個starter也會引入spring-boot-starter-jdbc
mybatis是用來操作數據庫的,也就是傳說中的orm框架,必然少不了mysql-connector-java用來連接數據的包
這時的pom文件長這樣子

<?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.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.gy</groupId>
    <artifactId>mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mybatis</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.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

3.配置文件

這時會發現,啓動報錯了,如圖所示
啓動報錯截圖
但是爲啥呢?很明顯,這還是因爲mybatis-spring-boot-starter在自動配置時,拿不到數據庫鏈接,導致的報錯,這時候要把數據庫配置加上
application.properties文件里加上如下配置

spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

當然,亦可以用yml等其它格式的配置文件,這裏是我的個人習慣
然後再加上兩行

mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.gy.mybatis.entity

這是告訴mybatis默認掃描的mapper文件,最終的結果是這樣子的

server.port=8090
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.gy.mybatis.entity

server.port是配置tomcat的端口,這裏是爲了和本地其他項目區分,可以按自己需要來。

寫到這裏,mybatis的配置其實已經都寫完了,剩下的就是寫業務代碼了。
以下是寫一個user查詢
建表語句

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` varchar(20) DEFAULT '',
  `name` varchar(20) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 MIN_ROWS=1 AVG_ROW_LENGTH=1 

UserEntity就是一個正常的JavaBean

package com.gy.mybatis.entity;
import java.io.Serializable;

public class UserEntity implements Serializable {
	private static final long serialVersionUID = -355601569296284232L;
	private Integer id;
	private String code;
	private String name;

	public Integer getId() {
		return id;
	}

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

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getName() {
		return name;
	}

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

	[@Override](https://my.oschina.net/u/1162528)
	public String toString() {
		return "UserEntity{" + "id=" + id + ", code='" + code + '\'' + ", name='" + name + '\'' + '}';
	}
}

然後是新建一個UserDao的接口

package com.gy.mybatis.dao;

import com.gy.mybatis.entity.UserEntity;
import org.springframework.stereotype.Repository;

[@Repository](https://my.oschina.net/u/3055569)
public interface UserDao {
	UserEntity queryUserById(Integer id);
}

然後是新建UserMapper.xml,位置就是在application.propertiesmybatis.mapper-locations屬性

<?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.gy.mybatis.dao.UserDao">
    <resultMap id="User" type="com.gy.mybatis.entity.UserEntity">
        <result column="id" jdbcType="INTEGER" property="id"/>
        <result column="code" jdbcType="VARCHAR" property="code"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
    </resultMap>

    <select id="queryUserById" resultMap="User">
        select id,code,name from user where id=#{id}
    </select>
</mapper>

至此一個根據id查詢就完成了 再來一個test,這裏圖方便,就直接寫了

package com.gy.mybatis;

import com.gy.mybatis.dao.UserDao;
import com.gy.mybatis.entity.UserEntity;
import com.gy.mybatis.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class MybatisApplicationTests {

	@Autowired
	private UserDao userDao;
	[@Test](https://my.oschina.net/azibug)
	void contextLoads() {
		UserEntity userEntity = userDao.queryUserById(2);
		System.out.println(userEntity);
	}

}

執行結果如下
執行結果

整個目錄結構
文件目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章