第1章(3課時(shí))

面試題

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

目錄結(jié)構(gòu)

image.png

第1節(jié)課

mybatis開(kāi)發(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>

等待的過(guò)程講解mybatis入門

mybatis入門

概念定義

mybatis是開(kāi)源的持久層框架,是apache下的頂級(jí)項(xiàng)目,他的前身ibatis
原來(lái)托管在google下,后來(lái)托管在github
他是ORM(對(duì)象關(guān)系映射)框架,數(shù)據(jù)庫(kù)表-java類的實(shí)體類 mapper類里

mybatis工作原理和流程

image.png

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

src/main/java *.java 關(guān)鍵代碼
src/main/resource 配置文件或資源文件
src/main/test 測(cè)試文件

演示第一個(gè)項(xiàng)目
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事務(wù)管理,事務(wù)控制由mybatis-->
            <transactionManager type="JDBC" />
        <!-- 數(shù)據(jù)庫(kù)連接池,由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命名空間,作用就是對(duì)sql進(jìn)行分類化管理,理解sql隔離 
注意:使用mapper代理方法開(kāi)發(fā),namespace有特殊重要的作用
-->
<mapper namespace="test">

    <!-- 在 映射文件中配置很多sql語(yǔ)句 -->
    <!-- 需求:通過(guò)id查詢用戶表的記錄 -->
    <!-- 通過(guò) select執(zhí)行數(shù)據(jù)庫(kù)查詢
    id:標(biāo)識(shí) 映射文件中的 sql
    將sql語(yǔ)句封裝到mappedStatement對(duì)象中,所以將id稱為statement的id
    parameterType:指定輸入 參數(shù)的類型,這里指定int型 
    #{}表示一個(gè)占位符號(hào)
    #{id}:其中的id表示接收輸入 的參數(shù),參數(shù)名稱就是id,如果輸入 參數(shù)是簡(jiǎn)單類型,#{}中的參數(shù)名可以任意,可以value或其它名稱
    
    resultType:指定sql輸出結(jié)果 的所映射的java對(duì)象類型,select指定resultType表示將單條記錄映射成的java對(duì)象。
     -->
    <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查詢用戶信息,得到一條記錄結(jié)果
    @Test
    public void findUserByIdTest() throws IOException {

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

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

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

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

        System.out.println(user);

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

    }
    
}

接下來(lái)從頭建立我們的第一個(gè)項(xiàng)目

創(chuàng)建mybatis項(xiàng)目

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

<!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ù)庫(kù)配置的資源文件
拷貝db.properties到src/main/resource下

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

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

第六步:修改SqlMapConfig.xml里

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

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

<?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下編寫測(cè)試程序
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());
      //關(guān)閉連接
      session.close();
   }

刪除功能
User.xml

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

測(cè)試類:

@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();
      //關(guān)閉連接
      session.close();
   }

sqlSessionFactory.openSession(); 默認(rèn)不自動(dòng)提交
sqlSessionFactory.openSession(true); 自動(dòng)提交,不用寫 session.commit();

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容