mybatis-spring連接數據庫方式

下面整理的是mybatis-spring連接mysql的一種方式,在開發時遇到的一些問題,作爲筆記先記錄下來。

  1. Dao的mapper文件和映射文件名稱,一定要一致,否則在數據處理時,會提示綁定失敗,找不到文件錯誤
  2. properties文件中的配置,其中都是可以源碼屬性信息對應的,會在啓動時自動導入
  3. mapper 文件中需要加註解@Repository,否則在使用時會提示找不到相應的bean信息
  4. 單元測試時,需要加註解@SpringBootTest,否則雖然可以自動導入mapper變量,但是值爲null

先總結這些,後面有問題再作記錄

目前只是連接單個數據庫,有些實際場景會有多個數據庫連接操作,後面補充

項目的目錄結構:

在這裏插入圖片描述

0、POM文件依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo04</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo04</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <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-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
<build>
    <!--資源文件管理-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

## 1、配置文件

配置文件中包括:數據連接信息和指定的映射文件

#數據庫相關配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=test
spring.datasource.password=123456
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

mybatis.mapper-locations=classpath*:com/example/dao/mapping/*.xml

2、DAO文件

UserInfoMapper.java

package com.example.dao.mapper;

import com.example.dao.pojo.UserInfo;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Mapper
@Repository
public interface UserInfoMapper {

    Integer selectCount();

    List<UserInfo> selectUserList();
}

UserInfoMapper.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.example.dao.mapper.UserInfoMapper">
    <select id="selectCount" resultType="java.lang.Integer">
    select count(1) from userinfo;
  </select>

    <select id="selectUserList" resultType="com.example.dao.pojo.UserInfo">
    select * from userinfo;
  </select>
</mapper>

實體類UserInfo

package com.example.dao.pojo;

public class UserInfo {

    private int id;
    private String username;
    private Integer gender;
    private String interest;

    public UserInfo(int id, String username, Integer gender, String interest) {
        this.id = id;
        this.username = username;
        this.gender = gender;
        this.interest = interest;
    }

    public String getInterest() {
        return interest;
    }

    public void setInterest(String interest) {
        this.interest = interest;
    }

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", gender=" + gender +
            ", interest='" + interest + '\'' +
            '}';
    }
}

3、單元測試

//由於是springboot項目,單元一定要記的添加該註解,否則在下面的自動注入時,變量爲空
@SpringBootTest
class Demo04ApplicationTest {

    @Autowired
    private UserInfoMapper userInfoMapper;

    //@Autowired
    //private UserEventMapper userEventMapper;

    @Test
    public void test() {
        Integer num = userInfoMapper.selectCount();
        System.out.println(num);

        List<UserInfo> userInfos = userInfoMapper.selectUserList();
        System.out.println(userInfos);

        //Integer eventCount = userEventMapper.selectCount();
        //System.out.println(eventCount);
    }
}

輸出結果

2
[UserInfo{id=1, username='張三', gender=1, interest='學習'}, UserInfo{id=2, username='李四', gender=2, interest='旅遊'}]
1

先到這裏了,後面再加多數據連接操作!

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