mybatis- mybatis入門

一 前言

MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 能夠使用簡單的 XML 或註解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。java

二 mybatis入門

小白你好啊,在這裏你要本身建立maven工程,若是不懂的配置安裝能夠看我tool系列的idea配置maven; 若是數據庫沒有學過,能夠看我sql系列的教程;在下文 properties裏面還隱藏了一個mysql的安裝教程,以避免你真是個小白啊!!!mysql

在這裏插入圖片描述

2.1 pom.xml

pom 裏面就是學習mybatis一些依賴了其中的 junit目前沒用到,可是下節課可能就用到啦,蒼天饒過誰啊!!!git

在這裏插入圖片描述

<dependencies>
        <!-- mybatis support-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- log4j support -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- junit support -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- mysql support -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.5</version>
        </dependency>

    </dependencies>
複製代碼

2.2 log4j.properties

配置log4j.properties是爲了更好顯示日誌信息,可以打印出sql;咱們在 resource目錄下新建一個 log4j.properties,內容以下,記得替換mapper包的映射路徑喲小白;要否則日誌打印不出來有你哭的,抱着哥哥的博客和公衆號都沒軟用;github

### 設置###
log4j.rootLogger = info,stdout

### 輸出信息到控制擡 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
## 這邊要替換成你的mapper包映射路徑喲
log4j.logger.com.zszxz.mybatis.mapper = debug
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

# mysql安裝https://zhuanlan.zhihu.com/p/37152572
複製代碼

2.3 數據庫建表

小白在這裏使用的mysql5.7版本,建表的信息以下;是一個學生類,主要字段是學生表主鍵,學生姓名,學生編號,而後我在裏面插入了2條記錄喲;哥哥爲何要創建學生實體呢,由於學生愛學習,學生最單純,哥哥把本身永遠看成了學生;sql

在這裏插入圖片描述

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `name` varchar(255) DEFAULT NULL COMMENT '學生姓名',
  `number` int(11) DEFAULT NULL COMMENT '學生編號',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `mybatis`.`student`(`id`, `name`, `number`) VALUES (1, '知識追尋者', 996);
INSERT INTO `mybatis`.`student`(`id`, `name`, `number`) VALUES (2, 'youku1327', 555);

複製代碼

2.4 學生實體

學生實體是爲了查詢sql語句將返回的結果映射到實體裏面喲!數據庫

/**
 1. @Author lsc
 2. @Description <p> </p>
 3. @Date 2019/12/1 20:07
 */
public class Student {

    // id
    private String id;
    // 學生姓名
    private String name;
    // 學生編號
    private String number;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}
複製代碼

2.5 mapper

下面的每句話都堪稱經典,你若是是異教徒,要像學習聖經同樣虔誠對待它:apache

  • StudentMapper.xml 是 一個xml 文件 裏面主要是 mybatis 的 DTD ,還有咱們寫的sql邏輯;
  • 注意 這邊有個 namespace 屬性是跟咱們 StudentMapper 接口對應映射路徑;
  • 一個 mapper.xml 對應一個 mapper 接口 別搞混咯,一般他們的名字都一個喲,官方習慣以mapper結尾喲;
  • StudentMapper.xml 建立的位置 是在 resource目錄的mapper子目錄中,若是你真是小白就別自定義喲,會出錯的;
  • StudentMapper 裏面有個方法 getStudent 是跟 <select> 標籤裏面的id 對應,表示 查詢方法的惟一標識;
  • resultType 裏面就是 學生實體的映射路徑,不要填類名,萬一報錯了,你可找不到我幫你檢查了;
  • <select> 標籤裏面的內容就是咱們的sql邏輯咯,哥哥這邊作了查詢全表的操做;

在這裏插入圖片描述

StudentMapper.xmlbash

<?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.zszxz.mybatis.mapper.StudentMapper">

    <!-- 查詢學生-->
    <select id="getStudent" resultType="com.zszxz.mybatis.entity.Student">
        select * from student
    </select>

</mapper>
複製代碼

StudentMappermarkdown

public interface StudentMapper {

    // 查詢學生
    List<Student> getStudent();
}
複製代碼

2.6 mybatis-config.xml - 它就是一個配置

mybatis-config.xml 是咱們 配置mybatis 的內容都在裏面,小白在這裏不用知道太多,小說裏面有句話很經典啊,知道的越多死的越快啊,你要學楊修麼,雖然才華橫溢,還不是被曹操咔嚓了!!!!你該知道的我都寫裏面;這個文件的位置 是放在 resource目錄下session

<?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">

<!-- mybaits配置 -->
<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://192.168.0.106:3306/mybatis"/>
                <!-- 帳號-->
                <property name="username" value="root"/>
                <!--密碼 -->
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 引入自定義mapper.xml -->
    <mappers>
        <mapper resource="mapper/StudentMapper.xml"/>
    </mappers>
</configuration>
複製代碼

2.7 Mybatis快跑

創建一個主類,讓咱們配置的mybatis跑起來把!!!

  • SqlSessionFactoryBuilder 是建造類,爲了得到 SqlSessionFactory,你能夠稱呼它爲 sql 會話(session) 工廠
  • SqlSessionFactory 工廠裏面有好多SqlSession,每一個線程都應該有一個 SqlSession(sql 會話),使用openSession() f方法得到SqlSession;
  • 執行完sql操做的方法別忘記關閉sqlSession 喲,要否則之後磁盤崩了別找我!!!
public static void main(String[] args) throws IOException {

        // 資源路徑
        String resource = "mybatis-config.xml";
        // 配置mybatis得到輸入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 建立 SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //從 SqlSessionFactory 中獲取 SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 使用 SqlSession 查詢
        List<Student> getStudent = sqlSession.selectList("getStudent");
        for (Student student : getStudent){
            System.out.println("學生姓名:"+student.getName()+" 學生編號:"+student.getNumber());
        }
        // 關閉 SqlSession
        sqlSession.close();
    }
複製代碼

2.8 mybatis跑出的獎盃

在這裏插入圖片描述

三 源碼源碼在哪裏

小白寫試試本身敲啊,不行了再看看哥哥的源碼!!!!!!! youku1327的github

在這裏插入圖片描述

本文同步分享在 博客「知識追尋者」(JueJin)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索