摘要:你數(shù)據(jù)庫(kù)的默認(rèn)值不起作用而是得到,那怎么解決這個(gè)問(wèn)題呢通過(guò)使用和標(biāo)簽我們解決了這個(gè)問(wèn)題。將和均交由該處理,但本人實(shí)測(cè),這個(gè)好像并沒(méi)有什么卵用,有用的是在文件中顯式指定,如下所示。
前言
Mybatis在我所見(jiàn)過(guò)的持久化框架里真心是一個(gè)異類,因?yàn)樗莝ql-centric的,而不是基于對(duì)象和表映射的。我會(huì)在本文中講一下Mybatis幾個(gè)重要的技巧,與本文的上一篇文章Hibernate做個(gè)對(duì)比。
Mybatis配置在ApplicationContext上加上如下配置:
XML
然后在mybatis-config.xml中做進(jìn)一步的配置。
XMLMybatis 分頁(yè)
Mybatis不支持分頁(yè),所以我采用了PageHelper這個(gè)插件,首先在你的Mybatis配置文件里加上一下配置
XML
然后在需要分頁(yè)的查詢之前,加上下面一句話:
javaPageHelper.startPage(pageNum,PAGE_SIZE);Mybatis 中的sql標(biāo)簽
由于Mybatis是通過(guò)文本替換組裝生成SQL語(yǔ)句的,所以不難發(fā)現(xiàn)它的插入和更新同樣是靜態(tài)的,對(duì)象里是null的插入也是null。你數(shù)據(jù)庫(kù)的默認(rèn)值不起作用而是得到null,那怎么解決這個(gè)問(wèn)題呢?
XMLid, phone, email, photo, #{id}, #{phone}, #{email}, #{photo}, insert into user ( ) values ( )
通過(guò)使用include和sql標(biāo)簽我們解決了這個(gè)問(wèn)題。
Mybatis typeHandler有時(shí)候我們常常想將Collection或者其他對(duì)象直接以Json字符串的形式存在數(shù)據(jù)庫(kù)里而不是再開一張表,雖然普遍的觀點(diǎn)是不贊同這種做法,但這種需求卻是實(shí)際存在的。怎么才能在DAO中就將字符串和對(duì)象的轉(zhuǎn)換做掉而不用交給上層顯式地轉(zhuǎn)換呢?
采用自定義的Typehandler就可以,下面給出一個(gè)例子
java@MappedJdbcTypes(JdbcType.VARCHAR) public class JSONHandler implements TypeHandler
首先設(shè)定處理的JDBCType,顯然是變長(zhǎng)字符,然后實(shí)現(xiàn)給定的接口,最后在Mybatis的配置文件中加上這么一句。
XML
將Map和List均交由該handler處理,但本人實(shí)測(cè),這個(gè)好像并沒(méi)有什么卵用,有用的是在Mapper.xml文件中顯式指定,如下所示。
XMLMybatis 外鍵查詢insert (tags) values (#{tags,typeHandler=sbeat.util.helper.JSONHandler})
外鍵查詢需要使用resultMap的association標(biāo)簽,如下所示
XMLMybatis 多參數(shù)
在接口定義中使用@Params注解,并在XML中不定義paramType,如下所示
javapublic ListfindByTradeId(@Param("tradeId") Long tradeId,@Param("ownerType") UserType ownerType);
XMLMybatis 逗號(hào)問(wèn)題
逗號(hào)的不注意往往是使用Mybatis中出現(xiàn)最多的失誤,可以通過(guò)使用where和set一級(jí)trim標(biāo)簽來(lái)盡量避免,如下所示:
XMLid, phone, phone=#{phone}, name=#{name}, id=#{id} AND logic_delete=#{logic_delete} AND logic_delete=false AND name=#{name}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64398.html
摘要:閱讀小札一閱讀前自大學(xué)課上,就開始接觸設(shè)計(jì)模式,但對(duì)設(shè)計(jì)模式卻鮮有研究與實(shí)踐。第二部分是核心部分,由淺到深講解個(gè)設(shè)計(jì)模式。設(shè)計(jì)模式遵循的原則所有設(shè)計(jì)模式罪訓(xùn)的一條原則就是找出程序中變化的地方,并將變化封裝起來(lái)。 閱讀小札 · 閱讀前 自大學(xué)Java課上,就開始接觸設(shè)計(jì)模式,但對(duì)設(shè)計(jì)模式卻鮮有研究與實(shí)踐。最近向公司反映和游說(shuō)技術(shù)提升,得以獲得公司提供購(gòu)書機(jī)會(huì),借此認(rèn)真學(xué)習(xí)前端學(xué)習(xí)之路的...
摘要:本文將由淺入深為您帶來(lái)一個(gè)粗略的使用體驗(yàn)。當(dāng)再次調(diào)用時(shí),將得到一個(gè)新的,并重新開始這一系列工作。與此同時(shí),提供了一套自己的,使用注解即可,主要有,,等,兩種級(jí)聯(lián)可以同時(shí)使用。 前言 Hibernate作為Java中最為流行的O/R映射框架,同時(shí)已經(jīng)完全遵照J(rèn)PA規(guī)范并作為其實(shí)現(xiàn)的一個(gè)超集,它能夠幫助我們快速進(jìn)行開發(fā),從繁重的持久化層實(shí)現(xiàn)中脫離出來(lái)。本文將由淺入深為您帶來(lái)一個(gè)粗略的Hi...
摘要:入門使用簡(jiǎn)介是支持普通查詢存儲(chǔ)過(guò)程和高級(jí)映射的持久層框架。一般情況下是被整合使用的,但是他也可以獨(dú)立使用。獨(dú)立使用步驟建立類。配置文件主要用于配置程序中可變性高的設(shè)置,中的配置文件主要封裝在中。針對(duì),注冊(cè)類型的,以及用于映射接口的。 MyBatis入門使用 MyBatis簡(jiǎn)介 MyBatis是支持普通SQL查詢、存儲(chǔ)過(guò)程和高級(jí)映射的持久層框架。MyBatis消除了幾乎所有的JDBC代碼...
摘要:入門介紹簡(jiǎn)介是支持普通查詢存儲(chǔ)過(guò)程和高級(jí)映射的持久層框架。獨(dú)立使用步驟建立類。配置文件主要用于配置程序中可變性高的設(shè)置,中的配置文件主要封裝在中。對(duì)應(yīng)于全局配置中的的配置屬性。進(jìn)行測(cè)試代碼實(shí)例建立類。針對(duì),注冊(cè)類型的,以及用于映射接口的。 MyBatis入門介紹 MyBatis簡(jiǎn)介 MyBatis是支持普通SQL查詢、存儲(chǔ)過(guò)程和高級(jí)映射的持久層框架。MyBatis消除了幾乎所有的JDB...
摘要:是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在應(yīng)用方面,是最好的,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用軟件。是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。 本章主要是對(duì)MyBatis-Plus的初步介紹,包括一些背景知識(shí)、環(huán)境搭建、初步使用等知識(shí)和例子。對(duì)于背景知識(shí),主要包含對(duì)MyBatis-Plus的特性介紹、為什么使用MyB...
閱讀 2938·2021-10-14 09:43
閱讀 2883·2021-10-14 09:42
閱讀 4663·2021-09-22 15:56
閱讀 2371·2019-08-30 10:49
閱讀 1594·2019-08-26 13:34
閱讀 2385·2019-08-26 10:35
閱讀 605·2019-08-23 17:57
閱讀 2029·2019-08-23 17:15