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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一章初始mybatis框架

發(fā)布時(shí)間:2024/4/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一章初始mybatis框架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

mybatis框架

  • ORM:
    • 常見的ORM框架:
      • ----認(rèn)識MyBatis:
      • ----開發(fā)步驟:
      • ----認(rèn)識配置文件:
      • ---認(rèn)識映射文件:
      • -----加載映射文件:

ORM:

ORM(Object/Relational Mapping),即對象/關(guān)系映射.ORM是一類框架的總稱,這類框架完成了對象數(shù)據(jù)到關(guān)系型數(shù)據(jù)的映射.使開發(fā)人員能夠以面向?qū)ο蟮乃枷?操作數(shù)據(jù)庫.

常見的ORM框架:

1 .MyBatis, 2. Hibernate, 3. 3.TopLink...

----認(rèn)識MyBatis:

一。概念:
MyBatis是一種基于Java的持久層框架,支持定制化SQL,存儲過程以及高級映射的持久層框架.最初是apache的開源項(xiàng)目–iBatis,2010年由apache遷移到google,并改名為MyBatis.在2013年11月由google遷移到GitHub

二。特點(diǎn):
1.MyBatis是一個(gè)輕量級ORM框架,只需mybatis-*.jar和數(shù)據(jù)庫驅(qū)動器即可運(yùn)行.
2.MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集
3.將SQL代碼與程序代碼分離,利于SQL重用和修改
4.MyBatis不會對應(yīng)用程序或數(shù)據(jù)庫的設(shè)計(jì)強(qiáng)加任何影響,提高應(yīng)用的靈活性

三。mybatis官網(wǎng) [可以查看mybatis框架的幫助文檔]:
https://mybatis.org/mybatis-3/zh/index.html

四。mybatis下載框架:
https://github.com/mybatis/mybatis-3/releases

----開發(fā)步驟:

第1步: 添加jar包

  • mybatis-3.5.1.jar
  • mysql-connector-java-5.1.22-bin.jar
  • 第2步: 編寫配置文件
    注意: 配置文件名稱和位置不限,但是通常稱為mybatis-config.xml,存入到src下

    <?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> <!--配置環(huán)境--> <environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="驅(qū)動器入口類的全名稱"/><property name="url" value="url地址信息"/><property name="username" value="賬戶"/><property name="password" value="密碼"/></dataSource></environment> </environments> <!--添加映射文件--> <mappers><mapper resource="包名1/包名2/.../文件名.xml"/> </mappers> </configuration>

    第3步: 編寫映射文件

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--在當(dāng)前XML中編寫針對User的CURD操作命令--> <mapper namespace="命名空間[類似包的作用]"> <select/insert/update/delete id="業(yè)務(wù)標(biāo)記名" resultType="實(shí)體類全名" parameterType="占位符類型">SQL命令 </select/insert/update/delete> </mapper>

    備注: 映射文件用于實(shí)現(xiàn) 實(shí)體對象與數(shù)據(jù)表字段的映射關(guān)系

    第4步: 編寫啟動程序

    //獲得MyBatis的配置文件: 數(shù)據(jù)庫信息,映射文件信息[SQL] InputStream is=Resources.getResourceAsStream(配置文件位置/配置文件名.xml");//參數(shù) 為配置文件的位置: a/mybatis-config.xml //基于配置信息創(chuàng)建SqlSessionFactory SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); //獲得SqlSession: 連接數(shù)據(jù)庫 SqlSession session=factory.openSession();//數(shù)據(jù)庫操作: CURD session.CURD方法名("命名空間.業(yè)務(wù)標(biāo)識名");//映射文件中的命名空間和業(yè)務(wù)標(biāo)識名 //執(zhí)行映射文件中的哪個(gè)SQL//提交事務(wù) session.commit(); //關(guān)閉連接 session.close();

    ----認(rèn)識配置文件:

    介紹
    MyBatis的配置文件中包含了影響MyBatis行為和屬性的信息,控制MyBatis的整體運(yùn)行方式.配置文件中主要配置數(shù)據(jù)源[驅(qū)動類,URL,賬號,密碼],事務(wù)管理,加載指定映射文件.
    說明:
    1.MyBatis配置文件的名稱和位置自定義.
    2.MyBatis未提供源碼和案例,配置和映射內(nèi)容參考官網(wǎng)或使用指南
    3.MyBatis配置文件頂層結(jié)構(gòu)如下:
    基本格式:

    -----配置標(biāo)簽:

    <environments> 作用: 聲明一組運(yùn)行環(huán)境.[支持多數(shù)據(jù)庫] 屬性: default: 設(shè)置默認(rèn)運(yùn)行環(huán)境,屬性值為某個(gè)<environment>的id值.<environment> 作用: 定義1個(gè)運(yùn)行環(huán)境 屬性: id: 設(shè)置當(dāng)前環(huán)境的匿稱,名稱任意.通常為development和work.<transactionManager>: 作用: 指定事務(wù)管理器,MyBatis含有2種事務(wù)管理器[JDBC和MANAGED] 屬性: type: JDBC[使用JDBC的提交和回滾設(shè)置],MANAGED[使用其他容器管理事務(wù)提交和回滾]<dataSource>: 作用: 該標(biāo)簽通過標(biāo)準(zhǔn)的JDBC數(shù)據(jù)源接口來配置JDBC連接對象的資源 屬性:type: 設(shè)置數(shù)據(jù)源的類型,屬性值為POOLED|UNPOOLED|JNDIPOOLED:使用連接池.從連接池中取出連接,關(guān)閉時(shí)將該連接放回連接池UNPOOLED: 不使用連接池.每次都打開新連接,關(guān)閉時(shí)將徹底關(guān)閉該連接JNDI: 從其他容器中獲得連接<property>: 作用: 定義數(shù)據(jù)源的指定屬性和值 屬性: name: 屬性名.在<dataSource>中,name通常為driver/url/username/password或其他 value: 屬性值.

    |-----配置數(shù)據(jù)源:
    方式1: 直接在property中寫明參數(shù)值

    <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydb"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource>

    方式2:

    <!--配置環(huán)境--> <properties><property name="mydriver" value="com.mysql.jdbc.Driver"/><property name="myurl" value="jdbc:mysql://localhost:3306/mydb"/><property name="myusername" value="root"/><property name="mypassword" value="123456"/> </properties> <environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--配置事務(wù)管理的方式: JDBC,MANAGED--><!--配置數(shù)據(jù)源: 賬戶/密碼 URL 驅(qū)動器 連接數(shù)據(jù)庫 --><dataSource type="POOLED"><!--type定義數(shù)據(jù)連接方式: POOLED[使用連接池]|UNPOOLED|JNDI--><property name="driver" value="${mydriver}"/><!--Class.forName("com.mysql.jdbc.Driver")--><property name="url" value="${myurl}"/><property name="username" value="${myusername}"/><property name="password" value="${mypassword}"/></dataSource></environment> </environments>

    方式3:在外部創(chuàng)建一個(gè)新的propertiet文件在文件中儲存配置數(shù)據(jù)源

    <properties resource="DBSource.properties" /> <environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--配置事務(wù)管理的方式: JDBC,MANAGED--><dataSource type="POOLED"><!--type定義數(shù)據(jù)連接方式: POOLED[使用連接池]|UNPOOLED|JNDI--><property name="driver" value="${db.driver}"/><!--Class.forName("com.mysql.jdbc.Driver")--><property name="url" value="${db.url}"/><property name="username" value="${db.user}"/><property name="password" value="${db.password}"/></dataSource></environment> </environments>

    方式4: 了解

    —認(rèn)識映射文件:

    一。介紹:
    MyBatis的映射文件主要用于定義業(yè)務(wù)操作命令,實(shí)現(xiàn)對象與數(shù)據(jù)表字段的映射,并控制對最終結(jié)果的封裝.MyBatis是針對SQL構(gòu)建,相對具有相同功能的JDBC代碼,減少了95%的代碼量

    二。說明:
    1.映射文件名稱和位置任意,不要求必須與POJO類在同一位置
    2.MyBatis未提供源碼和案例,配置和映射內(nèi)容參考官網(wǎng)或使用指南
    3.MyBatis映射文件頂層結(jié)構(gòu)如下:

    三。基本格式:

    <mapper namespace="匿名空間"><select/insert/update/delete... id="業(yè)務(wù)標(biāo)識名" resultType="封裝結(jié)果的對象[實(shí)體類全名]" parameterType="占位符的來源">SQL命令</select/insert/update/delete等等> </mapper>

    四。說明:
    1.namespace: 表示命名空間,類似Java包的作用.[在舊版中可選,在新版中必須配置]
    2.id: 設(shè)置業(yè)務(wù)操作匿名,方便程序中調(diào)用.
    3.parameterType: 指出將要傳入SQL命令中的占位符的類型,可以是普通類型或自定義類.
    4.resultType: 指出SQL命令執(zhí)行結(jié)果的類型.若結(jié)果為集合,該屬性值為元素的類型名.
    5.statementType: 設(shè)置SQL執(zhí)行對象的類型: STATEMENT,PREPARED[默認(rèn)值],CALLABLE.
    6.SQL命令末尾后的分號,可選

    五。占位符:
    1.介紹:
    Mybatis映射文件中的SQL命令,支持以占位符方式設(shè)置字段的值.同JDBC那樣,當(dāng)執(zhí)行SQL命令時(shí)需要額外指出占位符的值.

    2.格式:

    #{占位符名} #{uname}

    3.說明:

    • .占位符的值可以來自實(shí)體對象,Map集合,普通數(shù)據(jù)
    • .若占位符的值來自普通數(shù)據(jù),占位符名 任意. [僅1個(gè)占位符,比如 id]
    • .若占位符的值來自實(shí)體對象,占位符名 必須為對象的屬性名
    • .若占位符的值來自Map集合,占位符名 必須為鍵名

    |-----結(jié)果映射
    介紹:
    MyBatis自動將POJO對象的屬性與查詢結(jié)果集中字段名或添加/修改/刪除中占位符名映射,實(shí)現(xiàn)對象與表的映射關(guān)系.
    同時(shí),MyBatis提供了手動設(shè)置POJO對象屬性與執(zhí)行結(jié)果映射的方式: [resultMap]

    解決字段名與屬性名不同,無法映射:

    方式1: 通過在查詢的sql語句中定義字段名的別名,讓字段名的別名和實(shí)體類的屬性名一致,這樣就可以表的字段名和實(shí)體類的屬性名一一對應(yīng)上了,這種方式是通過在sql語句中定義別名來解決字段名和屬性名的映射關(guān)系的。

    select id, username as name, sex,age,address from user

    方式2: 通過[resultMap]標(biāo)簽來映射字段名和實(shí)體類屬性名的一一對應(yīng)關(guān)系。這種方式是使用MyBatis提供的解決方式來解決字段名和屬性名的映射關(guān)系的。

    <resultMap> <select id="" resultType="" resultMap="resultMap匿名A">SQL命令 </select> <!--自定義映射規(guī)則--> <resultMap id="resultMap匿名A" type="實(shí)體類全名">//用id屬性來映射主鍵字段<id property="主鍵屬性" column="主鍵字段名" />//用result屬性來映射非主鍵字段<result property="普通屬性" column="字段名" /> </resultMap>

    -----加載映射文件:

    方式1: resource方式加載映射文件

    格式: <mapper resource="映射文件路徑"> resource: 使用相對類路徑,指出映射文件的位置.比如 bean/User.xml

    方式2:class方式這里需要注意:接口類 和映射文件放在同一個(gè)目錄下,并文件名要一致

    格式: <mapper class="映射文件路徑"> class: 使用類全名,指出映射器接口的位置.比如: bean.UserMapper[UserMapper為接口

    方式3:url方式

    格式: <mapper url="映射文件路徑"> url: 使用絕對路徑,指出映射文件的位置.比如: file:///bean/User.xml

    方式4:包掃描加載映射文件 : 接口類 和映射文件放在同一個(gè)目錄下,并文件名要一致

    格式: <package name="包名" /> 說明: 將指定包中所有接口類,在MyBatis中注冊. 注意: mapper接口和映射文件名稱要相同,且在同1目錄下

    |----自定義別名:

    格式:<typeAliases></typeAliases>方式1: 定義指定類的別名 [定義單個(gè)類的別名]<typeAlias type="類全名" alias="別名[名稱任意]" />代碼實(shí)例:···<!-- mybatis-config.xml 中 --><typeAlias type="com.someapp.model.User[設(shè)置前類名稱]" alias="User[設(shè)置后的類名稱]"/>//設(shè)置user類的類全名別名為User.<!-- SQL 映射 XML 中 --><select id="selectUsers" resultType="User[設(shè)置后的類別名]">select id, username, hashedPasswordfrom some_tablewhere id = #{id}</select>方式2: 批量定義類別名 <typeAliases><package name="包名" /></typeAliases>定義后別名等于類名,不區(qū)分大小寫,但建議使用java命名規(guī)則 首字母小寫。

    總結(jié)

    以上是生活随笔為你收集整理的第一章初始mybatis框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。