編程改變世界(6)-- mybatis入門學(xué)習(xí)

mybatis是一個ORM(Object Relational Mapping)框架础爬,即對象關(guān)系映射框架祝高。

簡單來說乍赫,就是將數(shù)據(jù)庫中的表對應(yīng)成java程序中的bean實體類,數(shù)據(jù)庫中的字段對應(yīng)實體類中的屬性

那么如何創(chuàng)建一個最基本的mybatis項目呢改鲫,這次我們使用idea集成開發(fā)工具像棘,首先先建立一個maven工程,在pom.xml中添加相應(yīng)的依賴

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.miracle</groupId>
    <artifactId>t</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
    </dependencies>

</project>

然后呢瓶摆,mybatis需要一個核心配置文件状飞,名字可以任意起,我將它命名為mybatis.xml,具體內(nèi)容如下

<?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>
    <properties resource="jdbcConfig.properties"></properties>
    <typeAliases>
        <typeAlias type="com.pojo.Teacher" alias="Teacher"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/teacherMapper.xml"/>
    </mappers>
</configuration>

jdbc.properties 數(shù)據(jù)庫的配置如下

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/studb?serverTimezone=UTC&useSSL=false
jdbc.username=root
jdbc.password=root

我們需要在resource下建立一個mapper文件(teacherMapper),因為java中的屬性和數(shù)據(jù)庫中的字段不同,所以返回值為resultMap

<?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="mapper.teacherMapper">
    <select id="findTeacher" resultMap="teacherMap">
        select * from tb_teacher
    </select>
    
    <resultMap id="teacherMap" type="Teacher">
        <id property="id" column="id"/>
        <result property="name" column="t_name"/>
        <result property="role" column="role"/>
    </resultMap>
</mapper>

然后還需要一個pojo的teacher實體類

package com.pojo;

public class Teacher {

    private int id;
    private String name;
    private String role;

    public Teacher() {
    }

    public Teacher(int id, String name, String role) {
        this.id = id;
        this.name = name;
        this.role = role;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + ", role=" + role + "]";
    }
    
    
}

數(shù)據(jù)庫的表如下


image.png

下一步,我們需要一個工具類瞬沦,MybatisUtil,主要的功能就是獲取到SqlSession

package com.util;

import com.pojo.Classes;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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


public class MyBatisUtil {

    public static  SqlSession getSqlSession(){
        String resource = "mybatis.xml";
        InputStream is = null;
        try {
            is  = Resources.getResourceAsStream(resource);
        } catch (
                IOException e) {
            e.printStackTrace();
        }

        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(is).openSession(true);
        return sqlSession;
    }
}

下一步我們就可以寫Dao類了欲账,命名為teacherDao

package com.dao;

import com.pojo.Teacher;
import com.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class TeacherDao {
    private SqlSession sqlSession = MyBatisUtil.getSqlSession();
    private String sql = "mapper.teacherMapper.";
    public List<Teacher> findTeacher(){
        sql +="findTeacher";
        List<Teacher> list = sqlSession.selectList(sql);
        return list;
    }
}

最后我們來測試一下結(jié)果

package com.test;


import com.dao.TeacherDao;
import com.pojo.Teacher;


import java.util.List;

public class Test {

    public static void main(String[] args) {

        TeacherDao teacherDao = new TeacherDao();
        List<Teacher> list = teacherDao.findTeacher();
        for (Teacher teacher : list) {
            System.out.println(teacher);
        }


    }
}

結(jié)果如下圖所示


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末文黎,一起剝皮案震驚了整個濱河市淋纲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖晦闰,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異产场,居然都是意外死亡鹅髓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門京景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窿冯,“玉大人,你說我怎么就攤上這事确徙⌒汛” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵鄙皇,是天一觀的道長芜赌。 經(jīng)常有香客問我,道長伴逸,這世上最難降的妖魔是什么缠沈? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上洲愤,老公的妹妹穿的比我還像新娘颓芭。我一直安慰自己,他們只是感情好柬赐,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布亡问。 她就那樣靜靜地躺著,像睡著了一般肛宋。 火紅的嫁衣襯著肌膚如雪州藕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天酝陈,我揣著相機與錄音床玻,去河邊找鬼。 笑死后添,一個胖子當(dāng)著我的面吹牛笨枯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遇西,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼馅精,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粱檀?” 一聲冷哼從身側(cè)響起洲敢,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茄蚯,沒想到半個月后压彭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡渗常,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年壮不,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皱碘。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡询一,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出癌椿,到底是詐尸還是另有隱情健蕊,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布踢俄,位于F島的核電站缩功,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏都办。R本人自食惡果不足惜嫡锌,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一虑稼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧势木,春花似錦动雹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歼培。三九已至震蒋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躲庄,已是汗流浹背查剖。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留噪窘,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像展懈,于是被迫代替她去往敵國和親史辙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 浩习? MyBatis 是支持定制化 SQL静暂、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,532評論 0 4
  • MyBatis 理論篇 [TOC] 什么是MyBatis ?MyBatis是支持普通SQL查詢,存儲過程和高級映射...
    有_味閱讀 2,911評論 0 26
  • 1.JVM 堆內(nèi)存和非堆內(nèi)存 堆和非堆內(nèi)存按照官方的說法:“Java 虛擬機具有一個堆(Heap),堆是運行時數(shù)據(jù)...
    yanzhu728閱讀 919評論 0 0
  • 編寫日志輸出環(huán)境配置文件 在開發(fā)過程中谱秽,最重要的就是在控制臺查看程序輸出的日志信息洽蛀,在這里我們選擇使用 log4j...
    我沒有三顆心臟閱讀 6,578評論 0 33
  • 我前幾天見天安老師的時候老師給我們分享說他曾經(jīng)是一個練習(xí)型選手,就是平時很厲害疟赊,一到正式比賽就發(fā)揮不出自己的水平了...
    baby心理咨詢師閱讀 172評論 0 0