第1章(3課時)

面試題

https://blog.csdn.net/a745233700/article/details/80977133

目錄結構

image.png

第1節(jié)課

mybatis開發(fā)

jar包下載

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
        <!-- <version>3.3.0</version> -->
        <version>3.4.2</version>
</dependency>

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.36</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.2</version>
    </dependency> 
    
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
    </dependency>
    
    <dependency>
        <groupId>org.mybatis.caches</groupId>
        <artifactId>mybatis-ehcache</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>

        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.1</version>
    </dependency>

等待的過程講解mybatis入門

mybatis入門

概念定義

mybatis是開源的持久層框架淀歇,是apache下的頂級項目易核,他的前身ibatis
原來托管在google下,后來托管在github
他是ORM(對象關系映射)框架浪默,數(shù)據(jù)庫表-java類的實體類 mapper類里

mybatis工作原理和流程

image.png

第二節(jié)課 第一個mybatis程序#

src/main/java *.java 關鍵代碼
src/main/resource 配置文件或資源文件
src/main/test 測試文件

演示第一個項目
src/main/resource下新建config文件夾牡直,并新建SqlMapConfig.xml

配置文件SqlMapConfig.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>

    <!-- 加載屬性文件 -->
    <properties resource="db.properties">
    </properties>
    
    
    <!-- 和spring整合后 environments配置將廢除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事務管理缀匕,事務控制由mybatis-->
            <transactionManager type="JDBC" />
        <!-- 數(shù)據(jù)庫連接池,由mybatis管理-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加載 映射文件 -->
    <mappers>
        <mapper resource="sqlmap/User.xml"/>
    </mappers>
    
</configuration>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true
jdbc.username=root
jdbc.password=root

User.java

public class User {
    // 主鍵id,自增
    private int user_id;
    private String user_name;
    private String user_pwd;
    private String user_email;
    private String user_idCard;
    private int user_power=0;

....
}

user.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">

<!-- namespace命名空間碰逸,作用就是對sql進行分類化管理乡小,理解sql隔離 
注意:使用mapper代理方法開發(fā),namespace有特殊重要的作用
-->
<mapper namespace="test">

    <!-- 在 映射文件中配置很多sql語句 -->
    <!-- 需求:通過id查詢用戶表的記錄 -->
    <!-- 通過 select執(zhí)行數(shù)據(jù)庫查詢
    id:標識 映射文件中的 sql
    將sql語句封裝到mappedStatement對象中饵史,所以將id稱為statement的id
    parameterType:指定輸入 參數(shù)的類型满钟,這里指定int型 
    #{}表示一個占位符號
    #{id}:其中的id表示接收輸入 的參數(shù),參數(shù)名稱就是id胳喷,如果輸入 參數(shù)是簡單類型湃番,#{}中的參數(shù)名可以任意,可以value或其它名稱
    
    resultType:指定sql輸出結果 的所映射的java對象類型厌蔽,select指定resultType表示將單條記錄映射成的java對象牵辣。
     -->
    <select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
        SELECT * FROM T_USER WHERE user_id=#{id}
    </select>
    
    
</mapper>

MybatisTest.java

public class MybatisTest {

    // 根據(jù)id查詢用戶信息,得到一條記錄結果
    @Test
    public void findUserByIdTest() throws IOException {

        // mybatis配置文件
        String resource = "config/SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 創(chuàng)建會話工廠奴饮,傳入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
                .build(inputStream);

        // 通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 通過SqlSession操作數(shù)據(jù)庫
        // 第一個參數(shù):映射文件中statement的id,等于=namespace+"."+statement的id
        // 第二個參數(shù):指定和映射文件中所匹配的parameterType類型的參數(shù)
        // sqlSession.selectOne結果 是與映射文件中所匹配的resultType類型的對象
        // selectOne查詢出一條記錄
        User user = sqlSession.selectOne("test.findUserById", 1);

        System.out.println(user);

        // 釋放資源
        sqlSession.close();

    }
    
}

接下來從頭建立我們的第一個項目

創(chuàng)建mybatis項目

第一步新建maven web項目
第二步 創(chuàng)建依賴pom.xml,引入mybatis相關的jar(上面已完成)
第三步 創(chuàng)建src/main/resource下建立config文件夾
在文件夾下面建立SqlMapConfig.xml
具體操作步驟:file-new-other-xml file輸入文件名字SqlMapConfig.xml
打開mybatis 開發(fā)指南中文版第5頁復制以下內容

<!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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>

第四步:引入數(shù)據(jù)庫配置的資源文件
拷貝db.properties到src/main/resource下

第五步:SqlMapConfig.xml里引用資源文件

<!-- 引入資源文件 -->
<properties resource="db.properties"></properties>

第六步:修改SqlMapConfig.xml里

<mapper resource="sqlmap/User.xml"/>

第七步:有resource下建立sqlmap文件夾
第八步:在文件夾下建立User.xml
拷貝手冊第7頁如下內容并修改為正確的路徑

<?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="user">
<select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
select * from t_user where user_id = #{user_id}
</select>
</mapper>

第九步:src/main/java下新建com.neuedu.pojo包
并在包下建立User.java

package com.neuedu.pojo;

public class User {
    // 主鍵id,自增
    private int user_id;
    private String user_name;
    private String user_pwd;
    private String user_email;
    private String user_idCard;
    private int user_power = 0;
    
}

第三節(jié)
在src/test/java下編寫測試程序
MybatisTest.java

@Test
   public void findTest() throws IOException{
       //第一步讀取SqlMapConfig
      //指定文件位置
      String resource="config/SqlMapConfig.xml";
      //讀取資源文件
      InputStream input=Resources.getResourceAsStream(resource);
      //獲取SqlSessionFactory
      SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
      //獲取SqlSession
      SqlSession session=factory.openSession();
      //執(zhí)行查詢
      User u=session.selectOne("user.findUserById", 1);
      System.out.println(u.getUser_name());
      //關閉連接
      session.close();
   }

刪除功能
User.xml

<delete id="delUser" parameterType="int">
delete from t_user where user_id = #{user_id}
</delete>

測試類:

@Test
   public void delTest() throws IOException{
       //第一步讀取SqlMapConfig
      //指定文件位置
      String resource="config/SqlMapConfig.xml";
      //讀取資源文件
      InputStream input=Resources.getResourceAsStream(resource);
      //獲取SqlSessionFactory
      SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
      //獲取SqlSession
      SqlSession session=factory.openSession();
      //執(zhí)行查詢
      int count=session.delete("user.delUser",6);
      System.out.println(count);
       session.commit();
      //關閉連接
      session.close();
   }

sqlSessionFactory.openSession(); 默認不自動提交
sqlSessionFactory.openSession(true); 自動提交,不用寫 session.commit();

作業(yè):
做用戶的添加和修改功能

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末择浊,一起剝皮案震驚了整個濱河市戴卜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琢岩,老刑警劉巖投剥,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異担孔,居然都是意外死亡江锨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門糕篇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啄育,“玉大人,你說我怎么就攤上這事拌消√敉悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵墩崩,是天一觀的道長氓英。 經(jīng)常有香客問我,道長鹦筹,這世上最難降的妖魔是什么铝阐? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮铐拐,結果婚禮上徘键,老公的妹妹穿的比我還像新娘练对。我一直安慰自己,他們只是感情好啊鸭,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布锹淌。 她就那樣靜靜地躺著,像睡著了一般赠制。 火紅的嫁衣襯著肌膚如雪赂摆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天钟些,我揣著相機與錄音烟号,去河邊找鬼。 笑死政恍,一個胖子當著我的面吹牛汪拥,可吹牛的內容都是我干的。 我是一名探鬼主播篙耗,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迫筑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宗弯?” 一聲冷哼從身側響起脯燃,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒙保,沒想到半個月后辕棚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡邓厕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年逝嚎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详恼。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡补君,死狀恐怖,靈堂內的尸體忽然破棺而出单雾,到底是詐尸還是另有隱情赚哗,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布硅堆,位于F島的核電站屿储,受9級特大地震影響,放射性物質發(fā)生泄漏渐逃。R本人自食惡果不足惜够掠,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茄菊。 院中可真熱鬧疯潭,春花似錦赊堪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至相叁,卻和暖如春遵绰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背增淹。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工椿访, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虑润。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓成玫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拳喻。 傳聞我的和親對象是個殘疾皇子哭当,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容