一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Mybatis框架增刪查改與核心配置詳解流程與用法

Java Mybatis框架增刪查改與核心配置詳解流程與用法

2022-03-02 12:54龍弟-idea Java教程

MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數(shù)和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中

原始JDBC操作

原始jdbc操作(查詢數(shù)據(jù))

Java Mybatis框架增刪查改與核心配置詳解流程與用法

原始jdbc操作(插入數(shù)據(jù))

Java Mybatis框架增刪查改與核心配置詳解流程與用法

原始jdbc操作的分析原始jdbc開發(fā)存在的問題如下:
①數(shù)據(jù)庫連接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費從而影響系統(tǒng)性能
②sql 語句在代碼中硬編碼,造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。
③查詢操作時,需要手動將結果集中的數(shù)據(jù)手動封裝到實體中。插入操作時,需要手動將實體的數(shù)據(jù)設置到sql語句的占位符位置

應對上述問題給出的解決方案:
①使用數(shù)據(jù)庫連接池初始化連接資源
②將sql語句抽取到xml配置文件中
③使用反射、內省等底層技術,自動將實體與表進行屬性與字段的自動映射

 

Mybatis簡介

①mybatis是一個優(yōu)秀的基于java的持久層框架,它內部封裝了jdbc,使開發(fā)者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程。
②mybatis通過xml或注解的方式將要執(zhí)行的各種statement配置起來,并通過java對象和statement中sql的動態(tài)參數(shù)進行映射生成最終執(zhí)行的sql語句。
③最后mybatis框架執(zhí)行sql并將結果映射為java對象并返回。采用ORM思想解決了實體和數(shù)據(jù)庫映射的問題,對jdbc進行了封裝,屏蔽了jdbc api底層訪問細節(jié),使我們不用與jdbc api打交道,就可以完成對數(shù)據(jù)庫的持久化操作。

Mybatis官網(wǎng)地址:mybatis C MyBatis 3 | Introduction

 

Mybatis開發(fā)步驟:

①添加MyBatis的坐標
②創(chuàng)建user數(shù)據(jù)表
③編寫User實體類
④編寫映射文件UserMapper.xml
⑤編寫核心文件SqlMapConfig.xml
⑥編寫測試類

①添加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.12</version>
      </dependency>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
  </dependencies>

②創(chuàng)建user數(shù)據(jù)表

Java Mybatis框架增刪查改與核心配置詳解流程與用法

③編寫User實體類

public class User {

  private int id;
  private String username;
  private String password;
  //省略get和set方法
}

④編寫映射文件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">
<mapper namespace="userMapper">
  <!--查詢操作-->
  <select id="findAll" resultType="user">
      select * from user
  </select>
</mapper>

⑤編寫Mybatis核心文件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>
  <!--數(shù)據(jù)源環(huán)境-->
  <environments default="developement">
      <environment id="developement">
          <transactionManager type="JDBC"></transactionManager>
          <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="com/longdi/mapper/UserMapper.xml"></mapper>
  </mappers>
</configuration>

⑥編寫測試類

  @Test
  //查詢操作
  public void test1() throws IOException {
      //獲得核心配置文件
      InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
      //獲得session工廠對象
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
      //獲得session回話對象
      SqlSession sqlSession = sqlSessionFactory.openSession();
      //執(zhí)行操作  參數(shù):namespace+id
      List<User> userList = sqlSession.selectList("userMapper.findAll");
      //打印數(shù)據(jù)
      System.out.println(userList);
      //釋放資源
      sqlSession.close();
  }

 

Mybatis的映射文件概述

Java Mybatis框架增刪查改與核心配置詳解流程與用法

 

Mybatis的增刪改查操作

①Mybatis的插入數(shù)據(jù)操作

編寫UserMapper映射文件

<mapper namespace="userMapper">  
<!--插入操作-->
  <insert id="save" parameterType="com.longdi.domain.User">
      insert into user values(#{id},#{username},#{password})
  </insert>
</mapper>

編寫插入實體的User代碼

  @Test
  //插入操作
  public void test2() throws IOException {

      //模擬user對象
      User user = new User();
      user.setUsername("xxx");
      user.setPassword("abc");

      //獲得核心配置文件
      InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
      //獲得session工廠對象
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
      //獲得session回話對象
      SqlSession sqlSession = sqlSessionFactory.openSession(true);
      //執(zhí)行操作  參數(shù):namespace+id
      sqlSession.insert("userMapper.save",user);

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

插入操作注意問題:

插入語句使用insert標簽
在映射文件中使用parameterType屬性指定要插入的數(shù)據(jù)類型
Sql語句中使用#{實體屬性名}方式引用實體中的屬性值
插入操作使用的API是sqlSession.insert(“命名空間.id”,實體對象);
插入操作涉及數(shù)據(jù)庫數(shù)據(jù)變化,所以要使用sqlSession對象顯示的提交事務,即sqlSession.commit()

②Mybatis的修改數(shù)據(jù)操作

編寫UserMapper映射文件

<mapper namespace="userMapper">  
  <!--修改操作-->
  <update id="update" parameterType="com.longdi.domain.User">
      update user set username=#{username},password=#{password} where id=#{id}
  </update>
</mapper>

編寫修改實體的User代碼

  @Test
  //修改操作
  public void test3() throws IOException {

      //模擬user對象
      User user = new User();
      user.setId(7);
      user.setUsername("lucy");
      user.setPassword("123");

      //獲得核心配置文件
      InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
      //獲得session工廠對象
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
      //獲得session回話對象
      SqlSession sqlSession = sqlSessionFactory.openSession();
      //執(zhí)行操作  參數(shù):namespace+id
      sqlSession.update("userMapper.update",user);

      //mybatis執(zhí)行更新操作  提交事務   因為mybatis默認不提交事物
      sqlSession.commit();

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

修改操作注意問題:

修改語句使用update標簽
修改操作使用的API是sqlSession.update(“命名空間.id”,實體對象);

③Mybatis的刪除數(shù)據(jù)操作

編寫UserMapper映射文件

<mapper namespace="userMapper">  
  <!--刪除操作-->
  <delete id="delete" parameterType="int">
      delete from user where id=#{abc}
  </delete>
</mapper>

編寫刪除實體的User代碼

  @Test
  //刪除操作
  public void test4() throws IOException {

      //獲得核心配置文件
      InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
      //獲得session工廠對象
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
      //獲得session回話對象
      SqlSession sqlSession = sqlSessionFactory.openSession();
      //執(zhí)行操作  參數(shù):namespace+id
      sqlSession.delete("userMapper.delete",8);

      //mybatis執(zhí)行更新操作  提交事務
      sqlSession.commit();

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

刪除操作注意問題:

刪除語句使用delete標簽
Sql語句中使用#{任意字符串}方式引用傳遞的單個參數(shù)
刪除操作使用的API是sqlSession.delete(“命名空間.id”,Object);

Java Mybatis框架增刪查改與核心配置詳解流程與用法

 

MyBatis的核心配置文件概述

MyBatis核心配置文件層級關系

Java Mybatis框架增刪查改與核心配置詳解流程與用法

MyBatis常用配置解析

1.environments標簽
數(shù)據(jù)庫環(huán)境的配置,支持多環(huán)境配置

Java Mybatis框架增刪查改與核心配置詳解流程與用法

其中,事務管理器(transactionManager)類型有兩種:
①JDBC:這個配置就是直接使用了JDBC的提交和回滾設置,它依賴于從數(shù)據(jù)源得到的連接來管理事務作用域。
②MANAGED:這個配置幾乎沒做什么。它從來不提交或回滾一個連接,而是讓容器來管理事務的整個生命周期(比如JEE應用服務器的上下文)。默認情況下它會關閉連接,然而一些容器并不希望這樣,因此需要將closeConnection屬性設置為false來阻止它默認的關閉行為。
其中,數(shù)據(jù)源(dataSource)類型有三種:
①UNPOOLED:這個數(shù)據(jù)源的實現(xiàn)只是每次被請求時打開和關閉連接。
②POOLED:這種數(shù)據(jù)源的實現(xiàn)利用“池”的概念將JDBC連接對象組織起來。
③JNDI:這個數(shù)據(jù)源的實現(xiàn)是為了能在如EJB或應用服務器這類容器中使用,容器可以集中或在外部配置數(shù)據(jù)源,然后放置一個JNDI上下文的引用。
2.mapper標簽

該標簽的作用是加載映射的,加載方式有如下幾種:
①使用相對于類路徑的資源引用,例如: <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>

②使用完全限定資源定位符(URL),例如: <mapper url="file:/var/mappers/AuthorMapper.xml"/>

③使用映射器接口實現(xiàn)類的完全限定類名,例如: <mapper class="org.mybatis.builder.AuthorMapper"/>

④將包內的映射器接口實現(xiàn)全部注冊為映射器,例如: <package name="org.mybatis.builder"/>

3. Properties標簽

Java Mybatis框架增刪查改與核心配置詳解流程與用法

4.typeAliases標簽

Java Mybatis框架增刪查改與核心配置詳解流程與用法

上面我們是自定義的別名,mybatis框架已經(jīng)為我們設置好的一些常用的類型的別名

Java Mybatis框架增刪查改與核心配置詳解流程與用法

 

Mybatis相應API

①SqlSession工廠構建器SqlSessionFactoryBuilder
常用API: SqISessionFactory build(InputStream inputStream)
通過加載mybatis的核心文件的輸入流的形式構建一個SqlSessionFactory對象

Java Mybatis框架增刪查改與核心配置詳解流程與用法

其中,Resources 工具類,這個類在 org.apache.ibatis.io包中。Resources類幫助你從類路徑下、文件系統(tǒng)或一個web URL 中加載資源文件。

②SqlSession工廠對象SqlSessionFactory

SqlSessionFactory有多個個方法創(chuàng)建SqlSession實例。常用的有如下兩個:

Java Mybatis框架增刪查改與核心配置詳解流程與用法

③SqlSession會話對象

SqISession實例在MyBatis中是非常強大的一個類。在這里你會看到所有執(zhí)行語句、提交或回滾事務和獲取映射器實例的方法。執(zhí)行語句的方法主要有:

Java Mybatis框架增刪查改與核心配置詳解流程與用法

操作事務的方法主要有:
①void commit()

②void rollback()

到此這篇關于Java Mybatis框架增刪查改與核心配置詳解流程與用法的文章就介紹到這了,更多相關Java Mybatis內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_48838340/article/details/120929552

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日本一本线在线观看 | 幻女free性摘花第一次 | 国产成人精品综合在线观看 | freexxxx性护士第一次 | h视频免费高清在线观看 | 秋霞网毛片 | 98pao强力打造高清免费 | 91麻豆国产 | 近亲乱中文字幕 | 国产高清在线播放刘婷91 | 四虎成人免费大片在线 | 91在线亚洲综合在线 | 国内精品久久久久小说网 | 免费观看韩剧网站在线观看 | www.大逼色| tiny4k欧美极品在线 | 操碰91| 天堂网www中文天堂在线 | 精品区卡一卡2卡三免费 | 国产精品资源在线观看网站 | 高清男的插曲女的 欢迎你老狼 | 国产成人久久精品推最新 | 四虎网址 | 免费二区 | 清纯漂亮女友初尝性过程 | 精新精新国产自在现拍 | 99热成人精品热久久669 | 亚洲精品久久久久福利网站 | 国产精品视频视频久久 | 成人免费体验区福利云点播 | 狠狠鲁视频 | 四虎影院com | 亚洲精品一区波多野结衣 | 成人免费播放 | 午夜dj免费视频观看社区 | 啪啪导航| 亚洲精品动漫免费二区 | 特黄未满14周岁毛片 | 男人j放进女人的p免费看视频 | 亚洲天堂中文 | 思久久 |