日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis入门和全局配置文件介绍

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis入门和全局配置文件介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、MyBatis

1.簡介

2.為什么要使用

3.下載地址

4.MyBatis操作數據庫流程

5.接口式編程簡單案例

6.小結

二、MyBatis-全局配置文件

1.properties屬性

2.settings設置

3.typeAliases別名處理器

4.environments環境

5.databaseIdProvider環境

6.mapper映射


一、MyBatis

1.簡介

  • MyBatis是支持定制化SQL、存儲過程以及高級映射的優秀的持久層框架。

  • MyBatis避免了幾乎所有的JDBC代碼和手動設置參數以及獲取結果集。

  • MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO映射成數據庫中的記錄。

  • MyBatis是一個半自動化的持久化層框架。

2.為什么要使用

  • JDBC

  • SQL夾在Java代碼塊中,耦合度高導致硬編碼。

  • 維護不易且實際開發中sql是有變化的。

  • Hibernate和JPA

  • 長難復雜的SQL,對于Hibernate而言處理也不容易。

  • 內部自動生產的SQL,不容易做特殊優化。

  • 基于全映射的全自動框架,大量字段的POJO進行部分映射時比較困難。

3.下載地址

? https://github.com/mybatis/mybatis-3/

4.MyBatis操作數據庫流程

  • 引入mysql-connector-java-5.1.37-bin.jar和mybatis-3.4.6.jar

  • 創建MyBatis全局配置文件

  • 創建SQL映射文件

  • 根據全局配置文件,利用SqlSessionFactoryBuilder創建SqlSessionFactory

  • 使用SqlSessionFactory獲取sqlSession對象。一個sqlSession對象代表和數據庫的一次會話

  • 使用SqlSession進行增刪改操作

  • 5.接口式編程簡單案例

    創建tb1_employee數據庫表

  • 創建sql表對應的實體類Employee

    public class Employee {private int id;private String name;private String gender;private String email;public Employee() {} ?public Employee(int id, String name, String gender, String email) {this.id = id;this.name = name;this.gender = gender;this.email = email;}//... }

    ?

  • 創建操作Employee表的接口類

    package com.itheima.dao; ? import com.itheima.bean.Employee; ? public interface EmployeeMapper {public Employee getEmpById(Integer integer); }

    ?

  • 創建MyBatis全局配置文件

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//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://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments><!-- 將我們寫好的sql映射文件(EmployeeMapper.xml)一定要注冊到全局配置文件(mybatis-config.xml)中 --><mappers><mapper resource="conf/EmployeeMapper.xml" /></mappers> </configuration>

    ?

  • 創建SQL映射文件EmployeeMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.dao.EmployeeMapper"> <!-- namespace:名稱空間;指定為接口的全類名 id:唯一標識 resultType:返回值類型 #{id}:從傳遞過來的參數中取出id值 ? public Employee getEmpById(Integer id);--><select id="getEmpById" resultType="com.itheima.bean.Employee">select id,name,email,gender from tb1_employee where id = #{id}</select> </mapper>

    ?

  • 得到SqlSession進行查詢操作

  • ?private static SqlSessionFactory getSqlSessionFactory() throws IOException {//1.根據xml配置文件創建一個SqlSessionFactory對象String resource = "conf/mybatis-config.xml";InputStream resourceAsStream = Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(resourceAsStream);} ?@Testpublic void test01() throws IOException {//1.獲取SqlSessionFactorySqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//2.獲取sqlSession對象SqlSession sqlSession = sqlSessionFactory.openSession();//3.獲取接口的實現類對象//會為接口創建一個動態代理對象EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);Employee emp = mapper.getEmpById(1);System.out.println(emp);sqlSession.close();}

    6.小結

    • SqlSession的實例不是線程安全的,因此不能被共享。

    • SqlSession每次使用完成后需要正確關閉。

    • SqlSession可以直接調用方法的id進行數據庫操作,但是我們一般還是推薦使用SqlSession獲取到Dao接口的代理類,執行代理對象的方法,可以更安全的進行類型檢查操作。

    二、MyBatis-全局配置文件

    1.properties屬性

    <!--1、mybatis可以使用properties來引入外部properties配置文件的內容;resource:引入類路徑下的資源url:引入網絡路徑或者磁盤路徑下的資源 --><properties resource="dbconfig.properties"></properties> ?<environments default="dev_mysql"><environment id="dev_mysql"><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>

    dbconfig.properties

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=123456

    2.settings設置

    • setting會改變MyBatis的運行時行為。

      ? name:設置項名

      ? value:設置項取值

    3.typeAliases別名處理器

    • 可以為Java類型設置一個短的名字,方便我們引用某個類

    • 類很多的情況下,可以批量設置別名,給這個包下的而每一個類創建一個默認的別名,就是類名小寫

    • 也可以使用@Alisa注解為其制定一個別名

      typeAliases><!--typeAlias:為某個java類型起別名type:指定要起別名的全類名,默認別名就是類名小寫alias:指定新的別名--><typeAlias type="com.itheima.bean.Employee" alias="employee"></typeAlias><!--package:為某個包下的所有類及其子包批量起別名(類名小寫)批量起別名的情況下,可以會造成某個包下的子包下有類名沖突,可以使用@Alias(value="指定別名")注解指定新的別名--><package name="com.itheima.bean"/></typeAliases>

      ?

    4.environments環境

    • MyBatis可以配置多種環境,比如開發、測試和生產環境對應的不同配置

    • 每種環境使用一個environment標簽進行配置并制定唯一標識符

    • 可以通過environments標簽中的default屬性指定一個環境的標識符來快速的切換環境

    <!--id:指定當前環境的唯一標識transactionManager:事務管理器type:事務管理器的類型JDBC(JdbcTransactionFactory)MANAGED(ManagedTransactionFactory)自定義事務管理器:實現TransactionFactory接口.type指定為全類名dataSource:數據源type:數據源類型UNPOOLED(UnpooledDataSourceFactory)POOLED(PooledDataSourceFactory)JNDI(JndiDataSourceFactory)自定義數據源:實現DataSourceFactory接口,type是全類名 --> <environments default="dev_mysql"><environment id="dev_mysql"><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><environment id="dev_oracle"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${orcl.driver}" /><property name="url" value="${orcl.url}" /><property name="username" value="${orcl.username}" /><property name="password" value="${orcl.password}" /></dataSource></environment></environments>

    5.databaseIdProvider環境

    • MyBatis可以根據不同的數據庫廠商執行不同的語句

    <!-- type="DB_VENDOR":使用MyBatis提供的VendorDatabaseIdProvider解析數據庫廠商標識。也可以實現DatabaseIdProvider接口來自定義。property name:數據庫廠商標識value:為標識起一個別名,方便SQL語句使用databaseId屬性引用--><databaseIdProvider type="DB_VENDOR"><!-- 為不同的數據庫廠商起別名 --><property name="MySQL" value="mysql"/><property name="Oracle" value="oracle"/><property name="SQL Server" value="sqlserver"/></databaseIdProvider> <!--1.如果沒有配置databaseIdProvide標簽,那么databaseId=null2.如果配置了,使用標簽配置的name去匹配數據庫信息,匹配上設置databaseId=指定的值,否則依舊為null3.如果databaseId不為null,它只會找到配置databaseId的sql語句4.MyBatis會加載不帶databaseId的屬性和帶有匹配當前數據庫databaseId屬性的所有語句。如果同時找到帶有databaseId和不帶databaseId的相同語句,則后者被舍棄 --> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">select * from tbl_employee where id = #{id}</select><select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"databaseId="mysql">select * from tbl_employee where id = #{id}</select><select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"databaseId="oracle">select * from tbl_employee where id = #{id}</select>

    6.mapper映射

    • mapper逐個注冊SQL映射文件

    <mappers><mapper resource="conf/EmployeeMapper.xml" /> </mappers>
    • 批量注冊

    <!--mapper:注冊一個sql映射 注冊配置文件resource:引用類路徑下的sql映射文件mybatis/mapper/EmployeeMapper.xmlurl:引用網路路徑或者磁盤路徑下的sql映射文件file:///var/mappers/AuthorMapper.xml注冊接口class:引用(注冊)接口,1、有sql映射文件,映射文件名必須和接口同名,并且放在與接口同一目錄下;2、沒有sql映射文件,所有的sql都是利用注解寫在接口上;推薦:比較重要的,復雜的Dao接口我們來寫sql映射文件不重要,簡單的Dao接口為了開發快速可以使用注解; --> <mappers><package name="com.atguigu.mybatis.dao"/> </mappers>

    ?

    ?

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的MyBatis入门和全局配置文件介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。