框架之MyBatis核心配置

configuration 配置
-properties 屬性
-settings 設(shè)置
-typeAliases 類型命名
-typeHandlers 類型處理器
-objectFactory 對象工廠
-plugins 插件
-environments 環(huán)境
--environment 環(huán)境變量
--transactionManager 事務(wù)管理器
-dataSource 數(shù)據(jù)源
-mappers 映射器

<configuration>
    <!-- 配置全局屬性 -->
    <settings>
        <!-- 使用jdbc的getGeneratedKeys獲取數(shù)據(jù)庫自增主鍵值 -->
        <setting name="useGeneratedKeys" value="true" />

        <!-- 使用列別名替換列名 默認(rèn):true -->
        <setting name="useColumnLabel" value="true" />

        <!-- 開啟駝峰命名轉(zhuǎn)換:Table{create_time} -> Entity{createTime} -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>
mapper.xml[insert涮拗、update、select搜锰、delete]
<?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="com.neusoft.flycity.dao.BillDao">
    <insert id="addBill">
        INSERT INTO bill(ticketNum,ticketPrice,totalPrice,bookingID)
        VALUES (#{bookNum},#{price},#{price}*#{bookNum},#{bookingID})
    </insert>

    <delete id="deleteBill" parameterType="int">
        DELETE FROM bill where bookingID = #{bookingID}
    </delete>

    <select id="getById" parameterType="int" resultType="Bill">
        SELECT * FROM bill WHERE bookingID = #{bookingID}
    </select>
</mapper>

核心對象

SqlSessionFactory

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

SqlSession

SqlSession session = sqlSessionFactory.openSession();

SqlSessionFactoryBuilder
這個(gè)類可以被實(shí)例化、使用和丟棄传轰,一旦創(chuàng)建了 SqlSessionFactory膘格,就不再需要它了。
因此 SqlSessionFactoryBuilder 實(shí)例的最佳作用域是方法作用域(也就是局部方法變量)萝嘁。
SqlSessionFactory
SqlSessionFactory 一旦被創(chuàng)建就應(yīng)該在應(yīng)用的運(yùn)行期間一直存在梆掸,沒有任何理由對它進(jìn)行清除或重建。
因此 SqlSessionFactory 的最佳作用域是應(yīng)用作用域牙言。有很多方法可以做到酸钦,最簡單的就是使用單例模式或者靜態(tài)單例模式。
SqlSession
每個(gè)線程都應(yīng)該有它自己的 SqlSession 實(shí)例咱枉。SqlSession 的實(shí)例不是線程安全的卑硫,因此是不能被共享的徒恋,所以它的最佳的作用域是請求或方法作用域。

動(dòng)態(tài)SQL

  • if
<if test="title != null">
    AND title like #{title}
</if>
  • choose (when, otherwise)
<choose>
    <when test="title != null">
      AND title like #{title}
    </when>
    <when test="author != null and author.name != null">
      AND author_name like #{author.name}
    </when>
    <otherwise>
      AND featured = 1
    </otherwise>
</choose>
  • trim (where, set)
<where> 
    <if test="state != null">
         state = #{state}
    </if> 
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
</where>

<trim prefix="WHERE" prefixOverrides="AND |OR ">
  ... 
</trim>
<set>
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
</set>

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>
  • foreach
<foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
</foreach>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欢伏,一起剝皮案震驚了整個(gè)濱河市入挣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌硝拧,老刑警劉巖财岔,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異河爹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桐款,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門咸这,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魔眨,你說我怎么就攤上這事媳维。” “怎么了遏暴?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵侄刽,是天一觀的道長。 經(jīng)常有香客問我朋凉,道長州丹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任杂彭,我火速辦了婚禮墓毒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亲怠。我一直安慰自己所计,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布团秽。 她就那樣靜靜地躺著主胧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪习勤。 梳的紋絲不亂的頭發(fā)上踪栋,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音图毕,去河邊找鬼己英。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吴旋,可吹牛的內(nèi)容都是我干的损肛。 我是一名探鬼主播厢破,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼治拿!你這毒婦竟也來了摩泪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤劫谅,失蹤者是張志新(化名)和其女友劉穎见坑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捏检,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荞驴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贯城。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熊楼。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖能犯,靈堂內(nèi)的尸體忽然破棺而出鲫骗,到底是詐尸還是另有隱情,我是刑警寧澤踩晶,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布执泰,位于F島的核電站,受9級特大地震影響渡蜻,放射性物質(zhì)發(fā)生泄漏术吝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一茸苇、第九天 我趴在偏房一處隱蔽的房頂上張望顿苇。 院中可真熱鬧,春花似錦税弃、人聲如沸纪岁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔翰。三九已至,卻和暖如春西壮,著一層夾襖步出監(jiān)牢的瞬間遗增,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工款青, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留做修,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像饰及,于是被迫代替她去往敵國和親蔗坯。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 燎含? MyBatis 是支持定制化 SQL宾濒、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,519評論 0 4
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司屏箍,掛了不少绘梦,但最終還是拿到小米、百度赴魁、阿里卸奉、京東、新浪颖御、CVTE榄棵、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,243評論 11 349
  • 官方文檔 簡介 入門 XML配置 XML映射文件 動(dòng)態(tài)SQL Java API SQL語句構(gòu)建器 日志 一、 JD...
    拾壹北閱讀 3,544評論 0 52
  • 一郎嫁、安裝 使用MyBatis,首先需要下載其jar包,然后將jar包導(dǎo)入lib中即可祈噪,下載地址:github.co...
    涉務(wù)閱讀 262評論 0 0
  • 廣告大師約翰·沃納梅克曾經(jīng)提出過著名的廣告營銷界“哥德巴赫猜想”:“我知道我的廣告費(fèi)有一半是浪費(fèi)的,但我不知道浪費(fèi)...
    9c42a2489e1d閱讀 1,344評論 3 7