<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MyBatis--快速入門

      MyBatis--1.快速入門

      MyBatis簡介

      原始jdbc操作的弊端

      1. 創建、釋放頻繁導致系統資源浪費
      2. sql語句在代碼中硬編碼,不易維護
      3. 查詢操作時,需要手動將結果集中的數據封裝到實體中。插入操作同理需要手動

      解決方案:

      1. 使用數據庫連接池初始化連接資源
      2. 將sql語句抽取到xml配置文件中
      3. 使用反射、內省等底層技術,自動將實體與表進行屬性和字段的自動映射

      MyBatis簡介

      mybatis 是一個優秀的基于java的持久層框架,它內部封裝了 jdbc,使開發者只需要關注sql語句本身,而不需要花費精力 去處理加載驅動、創建連接、創建statement等繁雜的過程。

      mybatis通過xml或注解的方式將要執行的各種 statement配 置起來,并通過java對象和statement中sql的動態參數進行 映射生成最終執行的sql語句。

      最后mybatis框架執行sql并將結果映射為java對象并返回。采 用ORM思想解決了實體和數據庫映射的問題,對jdbc 進行了 封裝,屏蔽了jdbc api 底層訪問細節,使我們不用與jdbc api 打交道,就可以完成對數據庫的持久化操作 。

      MyBatis快速入門

      MyBatis開發步驟:

      1. 添加MyBatis的坐標

            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.32</version>
                </dependency>
        
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.4.6</version>
                </dependency>
        <!--        測試-->
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.13.2</version>
                    <scope>test</scope>
                </dependency>
        <!--        日志-->
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.12</version>
                </dependency>
            </dependencies>
        
      2. 創建user數據表

      3. 編寫user實體類

        public class User {
            private int id;
            private  String username;
            private  String password;
        
            @Override
            public String toString() {
                return "User{" +
                        "id=" + id +
                        ", username='" + username + '\'' +
                        ", password='" + password + '\'' +
                        '}';
            }
        
            public int getId() {
                return id;
            }
        
            public void setId(int id) {
                this.id = id;
            }
        
            public String getUsername() {
                return username;
            }
        
            public void setUsername(String username) {
                this.username = username;
            }
        
            public String getPassword() {
                return password;
            }
        
            public void setPassword(String password) {
                this.password = password;
            }
        }
        
      4. 編寫映射文件UserMapper.xml(寫sql語句)

        <?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命名空間-->
        <mapper namespace="userMapper">
        <!--    resultType是得到的結果封裝成的對象-->
            <select id="findAll" resultType="com.xxx.User">
                select  * from user
            </select>
        
        </mapper>
        
      5. 編寫核心文件SqlMapConfig.xml(mybatis配置文件)

        <?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>
        <!--    配置數據源的環境 default默認環境的id-->
            <environments default="development">
                <environment id="development">
        <!--            事務管理器-->
                    <transactionManager type="JDBC"></transactionManager>
        <!--            數據源類型,本處為池型-->
                    <dataSource type="POOLED">
        <!--                配置-->
                        <property name="driver" value="com.mysql.jdbc.Driver"/>
                        <property name="url" value="jdbc:mysql://localhost:3306/jdbcstudy"/>
                        <property name="username" value="root"/>
                        <property name="password" value="123456"/>
                    </dataSource>
                </environment>
            </environments>
            
            <!--    加載映射文件-->
            <mappers>
                <mapper resource="com/xxx/mapper/UserMapper.xml"/>
            </mappers>
        </configuration>
        
      6. 編寫測試類

        在test目錄下創建一個測試類

      package com.xxx;
      
      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 org.apache.log4j.lf5.util.Resource;
      import org.junit.Test;
      
      import java.io.File;
      import java.io.IOException;
      import java.io.InputStream;
      import java.util.List;
      
      public class test {
          @Test
          public  void  test1() throws IOException {
      //        獲取配置文件Resources是ibatis包下的
              InputStream resourceAsFile = Resources.getResourceAsStream("sqlMapConfig.xml");
      //        獲得session工廠對象
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsFile);
      //        獲得session會話對象
              SqlSession sqlSession = sqlSessionFactory.openSession();
      //        執行操作,userMapper是映射文件中的一個命名空間,findAll是該命名空間下的一個id
              List<User> userList = sqlSession.selectList("userMapper.findAll");
      //        打印數據
              System.out.println(userList);
      //        釋放資源
              sqlSession.close();
          }
      }
      

      結果:

      映射文件概述

      MyBatis增刪改查

      insert操作

      映射文件中:

      <!--    插入 parameterTyp是傳入參數-->
          <insert id="save" parameterType="com.xxx.User">
      --         參數是com.xxx.User的屬性名
              insert  into user values (#{id},#{username},#{password})
          </insert>
      

      測試:

      //        模擬user對象
              User user = new User();
              user.setId(5);
              user.setPassword("123456");
              user.setUsername("lili");
      //        獲取配置文件Resources是ibatis包下的
              InputStream resourceAsFile = Resources.getResourceAsStream("sqlMapConfig.xml");
      //        獲得session工廠對象
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsFile);
      //        獲得session會話對象
              SqlSession sqlSession = sqlSessionFactory.openSession();
      //        執行操作,userMapper是映射文件中的一個命名空間,findAll是該命名空間下的一個id
              sqlSession.insert("userMapper.save",user);
      //      MyBatis更新時需要手動提交事務,在sqlSessionFactory.openSession()設置參數為true會自動提交
      		sqlSession.commit();
      //        釋放資源
              sqlSession.close();
      

      相關注意:

      update操作

      <update id="update" parameterType="com.xxx.User">
          update user  set  username=#{username},password=#{password} where id=#{id}
      </update>
      

      測試和insert同理,只需要修改

       sqlSession.update("userMapper.update",user);
      

      delete操作

      <delete id="delete"  parameterType="java.lang.Integer">
          delete from user where  id=#{id}
      </delete>
      

      測試和insert同理,只需要修改

      sqlSession.delete("userMapper.delete",7);
      

      MyBatis核心配置文件

      environments標簽介紹

      事務管理器和數據源類型:

      mappers標簽

      使用mapper加載映射時,加載方式有:

      Properties標簽

      實際開發中,習慣將數據源的配置信息單獨抽取為一個properties文件,改標簽可以加載額外配置的properties文件

      typeAliases標簽

      MyBatis的相應API

      sqlSession工廠構造器sqlSessionFactoryBuilder

      sqlSessionFactory

      sqlSession

      posted @ 2023-08-13 16:06  云歸處、  閱讀(82)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产在线线精品宅男网址| 粉嫩一区二区三区国产精品| 精品一二三四区在线观看| 亚洲国产精品自在拍在线播放蜜臀| 巩义市| 亚洲国产日韩a在线播放| 亚洲色大成网站WWW永久麻豆| 国产在线乱子伦一区二区| 国产成人AV一区二区三区在线| 护士张开腿被奷日出白浆| 婷婷五月综合激情| 99在线精品免费视频九九视| 国产熟睡乱子伦视频在线播放| 久久亚洲国产品一区二区| 做暖暖视频在线看片免费| 中文字幕日韩精品人妻| 麻豆精产国品一二三区区| 国产成人精品手机在线观看| 日韩精品一区二区三区中文无码| 国产片av在线观看国语| 国产亚洲精品在av| 久久久久成人精品无码中文字幕| 天天爽夜夜爱| 男女xx00上下抽搐动态图| 久久精品无码鲁网中文电影| 中文字字幕在线中文乱码| 最近免费中文字幕大全| 18禁网站免费无遮挡无码中文| 国产偷窥熟女高潮精品视频| 亚洲熟妇在线视频观看| 无码一区二区三区AV免费| 国产中文字幕精品视频| 国产成人精品久久一区二| 亚洲熟妇色xxxxx亚洲| 婷婷伊人久久| 在国产线视频A在线视频| 韩国精品福利视频一区二区| 亚洲一区精品视频在线 | gogogo高清免费观看| 宅男噜噜噜66在线观看| 丝袜美腿亚洲综合第一页|