《深入淺出Mybatis技術(shù)原理與實(shí)戰(zhàn)》筆記

1. chapter1

JDBC 是一種橋接模式。 java程序都是通過(guò)JDBC(java data base connectivity)連接數(shù)據(jù)庫(kù)的。

(1)JDBC的弊端:

  • 工作量相對(duì)較大。我們需要先連接,然后處理JDBC底層事務(wù),處理數(shù)據(jù)類(lèi)型。我們還需要操作Connection對(duì)象Statement對(duì)象ResultSet對(duì)象去拿到數(shù)據(jù),并準(zhǔn)確關(guān)閉它們。
  • 我們要對(duì)JDBC的編程可能產(chǎn)生的異常進(jìn)行捕捉處理并正確關(guān)閉資源。

工作中很少使用JDBC編程,通常使用對(duì)象關(guān)系映射Object Relational Mapping,ORM),將數(shù)據(jù)庫(kù)對(duì)象和POJO相互映射。

(2)Hibernate的缺點(diǎn):

  • 全表映射帶來(lái)的不便,比如更新時(shí)需要發(fā)送所有的字段。
  • 無(wú)法根據(jù)不同的條件組裝不同的SQL。
  • 對(duì)多表關(guān)聯(lián)和復(fù)雜SQL查詢支持較差,需要自己寫(xiě)SQL,返回后,需要自己將數(shù)據(jù)組裝為POJO。
  • 不能有效支持存儲(chǔ)過(guò)程
  • 雖然有HQL,但是性能較差。大型網(wǎng)站往往需要優(yōu)化SQL,而Hibernate做不到。

(3)Mybatis特點(diǎn)

  • 使用xml維護(hù)sql,對(duì)需要優(yōu)化sql效率的地方提供方便,同時(shí)也分離了代碼和sql
  • 動(dòng)態(tài)拼接sql,靈活度很大
  • 缺點(diǎn):半自動(dòng)化,sql,pojo,映射規(guī)則都要自己手寫(xiě);編寫(xiě)的sql依賴(lài)于數(shù)據(jù)庫(kù),比如mysql和oracle在字符串連接上就是不一樣的,所以數(shù)據(jù)庫(kù)移植差

Mybatis環(huán)境搭建

初級(jí)

  1. pom.xml中引用mybatis依賴(lài)
  2. spring配置文件中直接配置連接池等信息即可。
    如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        ....(略過(guò))
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource">
    "username"、"password"、mysqlJdbc屬性等
    <property name="driverClassName" value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" 
        value="jdbc:mysql:///cloud_note?useUnicode=true&amp;characterEncoding=utf8">
    </property>
</bean>
<bean id="ssf" 
    class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dbcp"></property>
    <property name="mapperLocations" 
        value="classpath:cn/whbing/note/sql/*.xml">
    </property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="cn.whbing.note.dao">
    </property>
    <!-- 自動(dòng)注入sqlsessionfactory -->
</bean>
<!-- 開(kāi)啟掃描,掃描Controller,Service組件 -->
<context:component-scan base-package="cn.whbing.note"/> 

<!-- handlermapping,支持@RequestMapping,@ResponseBody,@Exceptionhanlder -->
<mvc:annotation-driven />

高級(jí)
上述配置的缺點(diǎn):

  • 配置文件與spring主配置文件融合在一起
  • usename、password等屬性未分離成.properties屬性文件
  • mybatis默認(rèn)的配置文件未指定,導(dǎo)致不能修改

分離后的結(jié)構(gòu):

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容