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

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

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

      了解MyBatis+Mapper+Maven開發

      一、什么是MyBatis?

      MyBatis是一款優秀的 持久層 框架,用于簡化JDBC開發。

      三層架構:表現層(顯示)、業務層(邏輯)、持久層(操作數據庫)。

      簡化JDBC開發:

      • 硬編碼:注冊驅動,獲取連接、SQL語句 => 寫到配置文件去
      • 操作繁瑣:手動設置參數、手動封裝結果集 => 自動完成

      二、MyBatis快速入門

      1. 查詢user表中所有數據案例,步驟:

          1.1 準備user表
          1.2 創建模塊,導入jar包信息
          1.3 編寫MyBatis核心配置文件 —> 替換連接信息,解決硬編碼問題
          1.4 編寫SQL映射文件 —> 統一管理SQL語句,解決硬編碼問題
          1.5 編碼
                1.5.1 定義POJO類,即實體類
                1.5.2 加載核心配置文件,獲取SqlSessionFactory對象
                1.5.3 獲取SqlSession對象,執行SQL
                1.5.4 釋放資源

      2. Maven+Mybatis實操:

      (1)Maven依賴管理文件pom.xml

      <?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>org.example</groupId>
          <artifactId>maven-demo</artifactId>
          <version>1.0-SNAPSHOT</version>
      
          <dependencies>
              <!--   MyBatis    -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>3.5.5</version>
              </dependency>
      
              <!--   mysql    -->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.46</version>
              </dependency>
      
              <!--   junit 單元測試    -->
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.13</version>
                  <scope>test</scope>
              </dependency>
      
              <!--添加slf4j日志api-->
              <dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-api</artifactId>
                  <version>1.7.20</version>
              </dependency>
              <!--添加logback-classic依賴-->
              <dependency>
                  <groupId>ch.qos.logback</groupId>
                  <artifactId>logback-classic</artifactId>
                  <version>1.2.3</version>
              </dependency>
              <!--添加logback-core依賴-->
              <dependency>
                  <groupId>ch.qos.logback</groupId>
                  <artifactId>logback-core</artifactId>
                  <version>1.2.3</version>
              </dependency>
      
          </dependencies>
      
      
      </project>

      (2)logback.xml日志配置文件

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <!--   CONSOLE:表示當前的日志信息是可以輸出到控制臺的。 -->
          <appender name="Console" class="ch.gos.logback.core.ConsleAppender">
              <encoder>
                  <pattern>[%level] %blue(%d{HH:mm:ss.SSS})%cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
              </encoder>
          </appender>
      
          <logger name="com.hung" level="DEBUG" additivity="false">
              <appender-ref ref="Console"/>
          </logger>
      </configuration>

      (3)user實體類

      package com.hung.pojo;
      
      public class User {
          private int id;
          private String username;
          private String password;
          private String gender;
          private String addr;
      
          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;
          }
          public String getGender() {
              return gender;
          }
          public void setGender(String gender) {
              this.gender = gender;
          }
          public String getAddr() {
              return addr;
          }
          public void setAddr(String addr) {
              this.addr = addr;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "id=" + id +
                      ", username='" + username + '\'' +
                      ", password='" + password + '\'' +
                      ", gender='" + gender + '\'' +
                      ", addr='" + addr + '\'' +
                      '}';
          }
      }

      (4)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>
          <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:///mybatis?useSSL=false"/>
                      <property name="username" value="root"/>
                      <property name="password" value="123456"/>
                  </dataSource>
              </environment>
          </environments>
          <mappers>
              <!--    加載sql映射文件    -->
              <mapper resource="UserMapper.xml"/>
          </mappers>
      </configuration>

      (5)UserMapper映射文件

      <?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:命名空間
         id:該sql語句的唯一標識
         resultType:返回結果類型
      -->
      <!-- tb_user 報紅,可在右側點擊database配置當前項目連接的數據庫解決 -->
      <mapper namespace="test">
          <select id="selectAll" resultType="com.hung.pojo.User">
          select * from tb_user;
        </select>
      </mapper>

      (6)MybatisDemo測試類

      package com.hung;
      
      import com.hung.pojo.User;
      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 java.io.IOException;
      import java.io.InputStream;
      import java.util.List;
      
      /**
       * Mybatis 入門
       */
      
      public class MybatisDemo {
          public static void main(String[] args) throws IOException {
              // 1.加載myBatis核心配置文件,獲取SqlSessionFactory (參照官網即可)
              String resource = "mybatis-config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
              // 2.獲取SqlSession對象
              SqlSession sqlSession = sqlSessionFactory.openSession();
              // 3.執行sql
              List<User> users = sqlSession.selectList("test.selectAll");
              System.out.println(users);
              // 4.釋放資源
              sqlSession.close();
          }
      }

      三、Mapper代理開發

       1. 步驟

      • 定義與SQL映射文件同名的Mapper接口,并且將Mapper接口和SQL映射文件放置在同一目錄下
      • 設置SQL映射文件的namespace屬性為Mapper接口全限定名
      • 在Mapper接口中定義方法,方法名就是SQL映射文件中sq語句的id,并保持參數類型和返回值類型一致
      • 編碼
        1. 通過SqlSession的getMapper方法獲取Mapper接口的代理對象
        2. 調用對應方法完成sql的執行

      2. Maven+Mybatis+Mapper實操(續二實操)

      (1)移動了UserMapper.xml文件,需相應修改mybatis-config.xml配置文件的加載sql映射的配置

      <mappers>
          <!--    加載sql映射文件    -->
          <!--    <mapper resource="com/hung/mapper/UserMapper.xml"/>   -->
          
          <!--    當接口文件和配置文件符合“同名”同“目錄”時,用包掃描方式更方便    -->
          
      </mappers>

      (2)修改UserMapper.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:命名空間
         id:該sql語句的唯一標識
         resultType:返回結果類型
      -->
      <mapper namespace="com.hung.mapper.UserMapper">
          <select id="selectAll" resultType="com.hung.pojo.User">
          select * from tb_user;
        </select>
      </mapper>

      (3)UserMapper接口文件

      package com.hung.mapper;
      
      import com.hung.pojo.User;
      
      import java.util.List;
      
      public interface UserMapper {
          // 返回值跟 UserMapper.xml 中定義的相同,這里返回裝了多個User的List集合
          List<User> selectAll();
      }

      (3)MybatisDemo2測試類

      package com.hung;
      
      import com.hung.mapper.UserMapper;
      import com.hung.pojo.User;
      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 java.io.IOException;
      import java.io.InputStream;
      import java.util.List;
      
      /**
       * Mybatis 入門
       */
      
      public class MybatisDemo2 {
          public static void main(String[] args) throws IOException {
              // 1.加載myBatis核心配置文件,獲取SqlSessionFactory (參照官網即可)
              String resource = "mybatis-config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
              // 2.獲取SqlSession對象
              SqlSession sqlSession = sqlSessionFactory.openSession();
      
              // 3.獲取UserMapper接口的代理對象對象(變化處)
              // List<User> users = sqlSession.selectList("test.selectAll");
              UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
              List<User> users = userMapper.selectAll();
      
              System.out.println(users);
              // 4.釋放資源
              sqlSession.close();
          }
      }

      四、MyBatis核心配置文件

      參考官網即可

      五、案例

      1. 使用配置文件開發方式

      使用配置進行增刪改查、使用注解進行增刪改查、動態SQL:已上傳gitee

      環境準備好之后,主要步驟就是:

      • 1. 編寫Mapper接口文件中的接口
                  參數:
                  結果:
      • 2. 編寫Mapper映射文件中的sql語句
      • 3. 編寫Java文件中的執行方法

      (1)Brand.java 實體類

      查看代碼
       package com.hung.pojo;
      
      public class Brand {
          private Integer id;
          private String brandName;
          private String companyName;
          private Integer ordered;
          private String description;
          private Integer status;
      
          public Integer getId() {
              return id;
          }
      
          public void setId(Integer id) {
              this.id = id;
          }
      
          public String getBrandName() {
              return brandName;
          }
      
          public void setBrandName(String brandName) {
              this.brandName = brandName;
          }
      
          public String getCompanyName() {
              return companyName;
          }
      
          public void setCompanyName(String companyName) {
              this.companyName = companyName;
          }
      
          public Integer getOrdered() {
              return ordered;
          }
      
          public void setOrdered(Integer ordered) {
              this.ordered = ordered;
          }
      
          public String getDescription() {
              return description;
          }
      
          public void setDescription(String description) {
              this.description = description;
          }
      
          public Integer getStatus() {
              return status;
          }
      
          public void setStatus(Integer status) {
              this.status = status;
          }
      
          @Override
          public String toString() {
              return "Brand{" +
                      "id=" + id +
                      ", brandName='" + brandName + '\'' +
                      ", companyName='" + companyName + '\'' +
                      ", ordered=" + ordered +
                      ", description='" + description + '\'' +
                      ", status=" + status +
                      '}';
          }
      }

      (2)BrandMapper.java 接口文件

      查看代碼
       package com.hung.mapper;
      
      import com.hung.pojo.Brand;
      import org.apache.ibatis.annotations.Param;
      
      import java.util.List;
      import java.util.Map;
      
      public interface BrandMapper {
      
          /**
           * 查詢所有
           * @return List<Brand>
           */
          List<Brand> selectAll();
      
          /**
           * 查詢詳情:根據ID
           * @param id
           * @return Brand
           */
          Brand selectById(int id);
      
          /**
           * 多條件動態條件查詢
           *  * 接收參數方式:
           *     1.散裝參數
           *     2.對象參數
           *     3.map集合參數
           * @param status
           * @param companyName
           * @param brandName
           * @return List<Brand>
           */
          List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String companyName,@Param("brandName")String brandName);
          // List<Brand> selectByCondition(Brand brand);
          // List<Brand> selectByCondition(Map map);
      
          /**
           * 單條件動態條件查詢
           * @param brand
           * @return
           */
          List<Brand> selectByConditionSingle(Brand brand);
      
          /**
           * 添加信息
           * @param brand
           */
          void add(Brand brand);
      
          /**
           * 更新信息
           * @param brand
           * @return
           */
          int update(Brand brand);
      
          /**
           * 批量刪除
           * @param ids
           */
          void deleteByIds(@Param("ids")int[] ids);
      }

      (3)BrandMapper.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:命名空間
         id:該sql語句的唯一標識
         resultType:返回結果類型
      -->
      
      <!-- 更改命名空間 -->
      <!-- 數據庫字段和實體類字段名稱不一致,不能自動封裝
           解決:
               1.在sql語句給字段起別名,但麻煩
               2.設置sql片段,也不方便
               3.resultMap 牛
      -->
      <mapper namespace="com.hung.mapper.BrandMapper">
          <!-- =========================定義返回類型映射============================== -->
          <!-- 定義 brandResultMap -->
          <!-- <id></id>: 主鍵映射
               <resultMap></<resultMap>: 一般字段映射
           -->
          <resultMap id="brandResultMap" type="com.hung.pojo.Brand">
              <result column="brand_name" property="brandName"/>
              <result column="company_name" property="companyName"/>
          </resultMap>
      
          <!-- ===========================查詢所有信息============================ -->
          <!--  設置resultMap="brandResultMap"  -->
          <select id="selectAll" resultMap="brandResultMap">
              select *
              from tb_brand;
          </select>
      
          <!-- ============================根據ID查詢=========================== -->
          <!--  #{id}}: ?占位參數,防止sql注入,因此常用于傳遞參數的時候,如下id:
                ${}:  拼接sql,會sql注入,可用于動態查詢的字段的占位,如下面的*位置字段
                特殊條件字符處理:
                   = 可正常使用,但 < 會被認為時標簽起始符號,需轉義 —> 轉義字符法 或 CDATA區法 查資料了解
          -->
          <select id="selectById" resultMap="brandResultMap">
              select *
              from tb_brand
              where id = #{id};
          </select>
      
          <!-- ============================條件查詢=========================== -->
          <select id="selectByCondition" resultMap="brandResultMap">
              <!-- 1.固定條件sql
              select * from tb_brand where status = #{status} and company_name like #{companyName} and brand_name like #{brandName}
              -->
              <!-- 2.多條件動態sql-->
              select * from tb_brand
              <where>
                  <if test="status != null">
                      and status = #{status}
                  </if>
                  <if test="companyName != null and companyName != ''">
                      and companyName like #{companyName}
                  </if>
                  <if test="brandName != null and brandName != ''">
                      and brandName like #{brandName}
                  </if>
              </where>
          </select>
      
          <!-- =========================單條件動態查詢============================== -->
          <select id="selectByConditionSingle" resultMap="brandResultMap">
              select * from tb_brand
              <where>
                  <choose>
                      <!-- 類似switch -->
                      <when test="status != null">
                          <!-- 類似case,條件成立即跳出choose -->
                          status = #{status}
                      </when>
                      <when test="companyName != null and companyName != ''">
                          companyName like #{companyName}
                      </when>
                      <when test="brandName != null and brandName != ''">
                          brandName like #{brandName}
                      </when>
                  </choose>
              </where>
          </select>
      
          <!-- =========================添加信息,獲取返回主鍵============================== -->
          <insert id="add" useGeneratedKeys="true" keyProperty="id">
              insert into tb_brand (brand_name, company_name, ordered, description, status)
              VALUES (#{brandName},#{companyName},#{ordered},#{description},#{status});
          </insert>
      
          <!-- =========================更新信息,獲取返回影響行數============================== -->
          <update id="update">
              update tb_brand
              <set>
                  <if test="brandName != null and brandName != ''">
                      brand_name = #{brandName},
                  </if>
                  <if test="companyName != null and companyName != ''">
                      company_name = #{brandName},
                  </if>
                  <if test="ordered != null">
                      ordered = #{ordered},
                  </if>
                  <if test="description != null and description != ''">
                      description = #{description},
                  </if>
                  <if test="status != null">
                      status = #{status},
                  </if>
              </set>
              where id = #{id};
          </update>
      
          <delete id="deleteByIds">
              delete from tb_brand
              where id in
              <foreach collection="ids" item="id" separator="," open="(" close=")">
                  #{id}
              </foreach>
              <!-- 或括號在
              (<foreach collection="ids" item="id" separator=",">
                  #{id}
              </foreach>)
              -->
          </delete>
      </mapper>

      (4)MyBatisTest.java 測試類

      查看代碼
       package com.hung.test;
      
      import com.hung.mapper.BrandMapper;
      import com.hung.pojo.Brand;
      import com.hung.pojo.User;
      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.junit.Test;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      public class MyBatisTest {
      	// 演示查詢所有,主要講解整個查詢流程
      	@Test
      	public void testSelectAll() throws IOException {
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession();
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法,接收返回結果,并處理(變化處)
      		List<Brand> brands = brandMapper.selectAll();
      		System.out.println(brands);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示根據ID查詢,注意查詢返回結果類型
      	@Test
      	public void testSelectById() throws IOException {
      		// 模擬接收前端參數
      		int id = 1;
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession();
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法,接收返回結果,并處理(變化處)
      		Brand brand = brandMapper.selectById(id);
      		System.out.println(brand);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示多條件動態參數處理,主要講解參數處理
      	@Test
      	public void testSelectByCondition() throws IOException {
      		// 模擬接收前端參數
      		int status = 1;
      		String companyName = "華為";
      		String brandName = "華為";
      
      		// 處理參數
      		// 1.散裝參數傳遞方法
      		companyName = "%" + companyName + "%";
      		brandName = "%" + brandName + "%";
      
              /* 2.對象參數傳遞方法
              companyName = "%" + companyName + "%";
              brandName = "%" + brandName + "%";
      
              Brand brand = new Brand();
              brand.setStatus(status);
              brand.setCompanyName(companyName);
              brand.setBrandName(BrandName);
               */
      
              /* 3.map對象傳遞參數方法
              companyName = "%" + companyName + "%";
              brandName = "%" + brandName + "%";
      
              Map map = new HashMap();
              map.put("status",status);
              map.put("companyName",companyName);
              map.put("brandName",brandName);
               */
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession();
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法,接收返回結果,并處理(變化處)
      		//   4.1散裝參數傳遞
      		List<Brand> brands = brandMapper.selectByCondition(status, companyName, brandName);
              /*   4.2對象參數傳遞
              List<Brand> brands = brandMapper.selectByCondition(brand);
              */
              /*   4.3map參數傳遞
              List<Brand> brands = brandMapper.selectByCondition(map);
              */
      		System.out.println(brands);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示單條件動態查詢,重心在sql語句
      	@Test
      	public void testSelectByConditionSingle() throws IOException {
      		// 模擬接收前端參數:單一參數
      		String brandName = "華為";
      
      		// 處理參數
      		brandName = "%" + brandName + "%";
      
      		Brand brand = new Brand();
      		brand.setBrandName(brandName);
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession();
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法,接收返回結果,并處理(變化處)
      		List<Brand> brands = brandMapper.selectByConditionSingle(brand);
      
      		System.out.println(brands);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示添加信息,主要講解事務的提交、接收主鍵返回
      	@Test
      	public void testAdd() throws IOException {
      		// 模擬接收前端參數
      		String brandName = "榮耀";
      		String companyName = "榮耀集團有限公司";
      		int ordered = 4;
      		String description = "榮耀手機是好手機";
      		int status = 1;
      
      		// 處理參數
      		Brand brand = new Brand();
      		brand.setBrandName(brandName);
      		brand.setCompanyName(companyName);
      		brand.setOrdered(ordered);
      		brand.setDescription(description);
      		brand.setStatus(status);
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession(true);// true:自動提交事務
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法
      		brandMapper.add(brand);
      
      		// 4.1手動提交事務
      		// sqlSession.commit();
      
      		// 4.2接收主鍵返回
      		int mainId = brand.getId();
      		System.out.println(mainId);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示修改信息,主要看sql語句,接收主鍵影響行數
      	@Test
      	public void testUpdate() throws IOException {
      		// 模擬接收前端參數
      		int id = 4;
      		String brandName = "honor";
      		// String companyName = "榮耀集團有限公司";
      		int ordered = 5;
      		String description = "honor手機是好手機";
      		int status = 0;
      
      		// 處理參數
      		Brand brand = new Brand();
      		brand.setBrandName(brandName);
      		// brand.setCompanyName(companyName);
      		brand.setOrdered(ordered);
      		brand.setDescription(description);
      		brand.setStatus(status);
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession(true);// true:自動提交事務
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法
      		int row = brandMapper.update(brand);
      
      		System.out.println(row);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      
      	// 演示批量刪除,主要看sql語句
      	@Test
      	public void testDeleteByIds() throws IOException {
      		// 模擬接收前端參數
      		int[] ids = {1,3,4};
      
      		// 1.加載myBatis核心配置文件,獲取SqlSessionFactory (固定代碼,參照官網即可!)
      		String resource = "mybatis-config.xml";
      		InputStream inputStream = Resources.getResourceAsStream(resource);
      		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
      		// 2.獲取SqlSession對象(固定代碼)
      		SqlSession sqlSession = sqlSessionFactory.openSession(true);// true:自動提交事務
      
      		// 3.獲取BrandMapper接口的代理對象對象(變化處)
      		BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      
      		// 4.執行查詢方法
      		brandMapper.deleteByIds(ids);
      
      		// 5.釋放資源
      		sqlSession.close();
      	}
      }

      2. 使用注解開發方式

      • 查詢 @Select
      • 添加 @Insert
      • 修改 @Update
      • 刪除 @Delete

      注解開發不需要寫xml映射文件,只需要在接口文件的方法上寫上注解:

      @Select("select * from tb_brand where id = #{}")
      Brand selectById(int id);

       

      posted @ 2022-08-17 16:58  RHCHIK  閱讀(107)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲爆乳精品无码一区二区| 亚洲最大成人在线播放| 久久碰国产一区二区三区| 男女性高爱潮免费网站| 国产精品无遮挡猛进猛出| 国产精品第二页在线播放| 免费又爽又大又高潮视频| 99riav国产精品视频| 激情综合网激情五月激情| 欧美和黑人xxxx猛交视频| 使劲快高潮了国语对白在线| 欧产日产国产精品精品| 人妻换着玩又刺激又爽| 69天堂人成无码免费视频| 大地资源网中文第五页| 九九热在线免费视频观看| 亚洲综合国产精品第一页| 欧美精品一区二区三区中文字幕| 人妻中文字幕亚洲一区| 高级艳妇交换俱乐部小说| 久久久久久久久久久免费精品| 日韩熟女精品一区二区三区 | 东京热人妻丝袜无码AV一二三区观| 亚洲天堂久久一区av| 熟妇人妻无码中文字幕老熟妇| 久久综合色之久久综合色| 在线播放亚洲成人av| 女人被狂躁的高潮免费视频| 亚洲综合一区二区三区在线| 国产丰满乱子伦无码专区| 冀州市| 深夜福利啪啪片| 亚洲色一色噜一噜噜噜| 汝南县| 久久一日本道色综合久久| 乱码中字在线观看一二区| 玉溪市| 樱桃视频影院在线播放| 久久99精品九九九久久婷婷 | 17岁日本免费bd完整版观看| 免费国产va在线观看|