天天看點

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

基于Maven,MyBatis,MySQL的IDEA開發Java項目

  • 前言
  • MySQL
  • Maven
    • 1.Maven環境配置
    • 2.Maven倉庫配置
    • 3. IDEA下Maven配置
    • 4.如何用Maven導入各種jar包
  • MyBatis
    • 1.進行mybatis核心配置
    • 2.建立mybatis核心工具類
  • 編寫測試代碼
    • 建立實體類
    • 建立dao層
    • 建立測試類

前言

本專欄是在MySQL資料庫下,基于Maven項目管理工具,用MyBatis取代JDBC繁瑣化操作,在IDEA編輯器下進行Java項目開發

MySQL

MySQL就是一個資料庫,類似于微軟的SQL Sever資料庫服務。

對于MySQL的安裝基本操作可以檢視其他相關資源,這裡放出本人之前寫的MySQL基本指令行文法,之後的操作需要用到的時候可以進行檢視。

請點選

MySQL指令行基本文法

用MySQL指令行建立一個資料庫表,内容如下

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

Maven

Maven就是一個Java項目管理工具,之前使用eclipse編寫代碼時,需要繁瑣的導入jar包,而Maven可以通過依賴集,自動下載下傳jar包,隻需要知道相關的你需要使用到的jar包即可。

1.Maven環境配置

Maven下載下傳成功後,首先需要配置Maven相關環境變量,可自行百度百科.

2.Maven倉庫配置

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

需要建一個本地倉庫,裡面用來存放Maven下載下傳的各種jar包;

Maven檔案夾下找到設定的XML,在裡面的本地倉庫路徑檔案填寫你建立的本地倉庫檔案夾

3. IDEA下Maven配置

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

在IDEA設定裡面,選擇Maven版本,使用之前設定好的settings.xml,選擇你建立好的本地倉庫檔案夾

4.如何用Maven導入各種jar包

1.建立你自己的基于maven的Java項目,注意組織名的編寫規範

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

2.找到你自己已經建立好的基于maven的Java項目,在pom.xml下進行相關操作。

xml就是一個語言,不做任何事情,就是用來傳輸,存儲資料
基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

建立一個dependencies集,下面就可以寫很多dependency,導入各種jar包,這裡我們看到,導入了一個mybatis的依賴,用來簡化資料庫操作,還有mysql的連接配接驅動用來連接配接資料庫,以及Junit測試。

如果你需要導入什麼包,隻需要進入https://www.mvnrepository.com/.

進行查找就行,找個下載下傳最多的

<dependencies>
        <!---mybatis的依賴-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!---mysql連接配接驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!---單元測試-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
           
基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

之後在右側選擇maven,重新整理一下,進行相關下載下傳。

到這裡,我們關于Maven的基本配置已經設定成功

MyBatis

MyBatis 是一款優秀的持久層架構。

它支援自定義 SQL、存儲過程以及進階映射。

MyBatis 免除了幾乎所有的 JDBC 代碼以及設定參數和擷取結果集的工作。

MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)為資料庫中的記錄。

什麼是持久層???

Java中有Dao層(持久層),Service層(業務邏輯實作),Controller層(隻負責接收使用者請求并傳回響應資料)

DAO層:

DAO層叫資料通路層,全稱為data access object,屬于一種比較底層,比較基礎的操作,具體到對于某個表的增删改查,也就是說某個DAO一定是和資料庫的某一張表一一對應的,其中封裝了增删改查基本操作,建議DAO隻做原子操作,增删改查。

Service層:

Service層叫服務層,被稱為服務,粗略的了解就是對一個或多個DAO進行的再次封裝,封裝成一個服務,是以這裡也就不會是一個原子操作了,需要事物控制。

Controler層:

Controler負責請求轉發,接受頁面過來的參數,傳給Service處理,接到傳回值,再傳給頁面。

1.進行mybatis核心配置

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

在resources下建立一個mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
    </mappers>
</configuration>
           

我們這裡要更改你想要連接配接的資料庫以及你之前mysql建立的賬号和密碼

<property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
           
<mappers>
        <mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
    </mappers>
           

1.就是這裡的ii改成别的你想要的資料庫名,以及下面的username和password都改成你的賬戶密碼,一般系統管理者都是root

2.mapper要和自己建立的mapper相關聯

mybatis的核心配置完成以後就可以和資料庫連接配接了

2.建立mybatis核心工具類

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
package edu.hqu.mybatis.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtil {

        private static SqlSessionFactory sqlSessionFactory;
    // 擷取sqlSession的工廠
        static {
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            }catch (IOException e){
                e.printStackTrace();
            }
        }
//既然有了 SqlSessionFactory,顧名思義,我們可以從中獲得 SqlSession 的執行個體。
 // SqlSession 提供了在資料庫執行 SQL 指令所需的所有方法。
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }


           

需要拿到sqlSessionFactory,才能生産出執行sql的sqlSession

sqlSessionFactory是通過resources去讀取配置檔案加載成流,

然後在通過sqlSessionFactoryBuilder加載這個流然後建構成工廠

每次都去擷取比較麻煩,是以我們一般封裝成一個工具類

簡而言之,在mybatis核心工具類裡,首先要有sqlSessionFactory,之後要有sqlSession,在sqlSession裡可以有SQL指令

編寫測試代碼

建立實體類

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
package edu.hqu.mybatis.pojo;

public class User {
    private int uid;
    private String uname;
    private String upassword;

    public User(int uid, String uname, String upassword) {
        this.uid = uid;
        this.uname = uname;
        this.upassword = upassword;
    }

    public User() {
}

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upassword='" + upassword + '\'' +
                '}';
    }

    public int getUid() {
        return uid;
    }

    public String getUname() {
        return uname;
    }

    public String getUpassword() {
        return upassword;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }
}


           

這裡的實體類最好與資料庫的相關屬性一一對應

建立dao層

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼

dao層裡面寫兩個,一個是UserMapper接口,一個是UserMapper.xml,實際上就是xml裡面寫SQL語句,接口用來調用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="edu.hqu.mybatis.dao.UserMapper">
    <!--綁定一個對應的mapper接口,我們這裡與UserMapper關聯-->

    <!--全限定名-->
    <!--确定絕對路徑-->
    <select id="getAllUsers" resultType="edu.hqu.mybatis.pojo.User">
        select * from user
    </select>
    <select id="getUserById" parameterType="int" resultType="edu.hqu.mybatis.pojo.User">
        select * from user where uid=#{uid}
    </select>
</mapper>

           
package edu.hqu.mybatis.dao;

import edu.hqu.mybatis.pojo.User;

import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int uid);
}
           

parameterType="int"表示SQL語句是有參的,無參就不用加,

resultType="edu.hqu.mybatis.pojo.User"是指你的實體類傳回類型在哪

List getAllUsers();表示傳回結果是泛型,因為是alluser,都是user類型

User getUserById(int uid);表示有參傳回user類型

建立測試類

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
package edu.hqu.mybatis.dao;

import edu.hqu.mybatis.pojo.User;
import edu.hqu.mybatis.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {
    @Test
    public void testGetAllUsers() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> allUsers = mapper.getAllUsers();
        for (User allUser : allUsers) {
            System.out.println(allUser);
        }
    }
    @Test
    public void testGetUserById(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User userById = mapper.getUserById(2);
        System.out.println(userById);

    }
}

           

我們建立兩個測試類,用來分别測試之前寫的GetAllUsers方法和GetUserById方法

**SqlSession sqlSession = MybatisUtil.getSqlSession();

UserMapper mapper = sqlSession.getMapper(UserMapper.class);**就是生成一個sqlSession和UserMapper互相關聯,這兩句在測試時候都要寫。

之後是具體的測試方法實作,

List allUsers = mapper.getAllUsers();

for (User allUser : allUsers) {

System.out.println(allUser);

}

User userById = mapper.getUserById(2);

System.out.println(userById);

基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼