【后端】集成mybatis以及orm框架和插件的個(gè)人看法

[TOC]

002-集成mybatis以及orm框架和插件的個(gè)人看法

文章來(lái)源:臨窗旋墨的博客

1-orm框架選擇和插件的個(gè)人看法

? 在springboot中使用jpa已經(jīng)非常的方便了,當(dāng)然也需要額外的花點(diǎn)學(xué)習(xí)的成本. 但是我個(gè)人是不大喜歡JPA這套規(guī)范下的代碼的,有太多的不可控因素,對(duì)于研究不深的人使用起來(lái)就是災(zāi)難. 曾使用hiberndate的時(shí)候就遇到過(guò)持久代持續(xù)增長(zhǎng)和級(jí)聯(lián)查詢IO過(guò)頻等問(wèn)題,暫且不表. JPA唯一的好處,我個(gè)人看來(lái)是對(duì)單表的操作,當(dāng)關(guān)聯(lián)關(guān)系復(fù)雜時(shí),從優(yōu)化層面就難以控制了(限于本人水平有限). 當(dāng)然JPA也支持原生的sql,但是和相比于已經(jīng)很難看的xml里的sql, 注解里的sql的可讀性就更差了,所以放棄了JAP.

? 放棄了JPA势似, 也不是完全代碼mybatis就一定有多好; 比如, 首先就是移植性不好嗓节, 這個(gè)也暫且忽略吧。 另外當(dāng)表結(jié)構(gòu)發(fā)生變化的時(shí)候,修改起來(lái)也是非常麻煩的, 需要手動(dòng)一處處的修改魂角; 另外在xml中寫sql,個(gè)人感官也比較一般智绸, 看著也不是那么的舒服野揪。 不過(guò)我個(gè)人還是稍微傾向于自己手動(dòng)編寫sql, 可控性稍微強(qiáng)一些瞧栗。

? 選擇mybatis時(shí)也有一點(diǎn)小小的糾結(jié),就是是否需要使用tk.mybatis或者mybatis-plus等,想了很久,決定全部放棄斯稳。基于個(gè)人對(duì)二者了解程度有限迹恐,單純覺(jué)得兩者都要寫實(shí)體上寫注解, 使DO(data obejct) 和VO界限不清,如果完全區(qū)分VO和DO 則又需要中間一層的轉(zhuǎn)換,而使用DO作為VO, 難免有需要對(duì)對(duì)象做一些調(diào)整. 雖然二者都可以結(jié)合generator自動(dòng)生成代碼,但是個(gè)人還是不喜歡(大概是雞蛋里挑骨頭吧).

? 最終還是堅(jiān)持選擇了原生的mybatis,但是個(gè)人也會(huì)寫一個(gè)代碼生成器(在后續(xù)得空在記錄下來(lái)吧),生成簡(jiǎn)單的增刪改查等根據(jù)業(yè)務(wù)需要使用的通用單表處理. 如此自主程度會(huì)更高.

2-集成mybatis

2.1-創(chuàng)建數(shù)據(jù)庫(kù)(mysql)

CREATE DATABASE boot DEFAULT CHARSET utf8;
GRANT ALL PRIVILEGES ON boot.* TO 'boot'@'localhost' IDENTIFIED BY '12345678';
-- mysql8 
-- CREATE USER 'boot'@'%' IDENTIFIED BY '12345678';
-- GRANT ALL PRIVILEGES ON boot.* TO 'boot'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

-- 追加相同的字段
/*
ALTER TABLE table_name ADD (
 `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_enable` TINYINT(1) DEFAULT '1' COMMENT '是否啟用',
  `is_delete` TINYINT(1) DEFAULT '0' COMMENT '是否刪除'
);

*/

2.2-新增依賴

<!-- mysql連接類 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<!-- mybatis 依賴 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

2.3-配置數(shù)據(jù)庫(kù)和mybatis

# mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=true
spring.datasource.username=boot
spring.datasource.password=password

# mybatis 配置 
mybatis.config-location=classpath:config/mybatis-config.xml
mybatis.mapper-locations=classpath:mapper/**/*.xml

  • 新增mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuratio

2.4-啟動(dòng)類開(kāi)啟掃描mapper注解

  • @MapperScan(basePackages = "pers.vic.boot.console.**.mapper")

2.5 測(cè)試mybatis

  1. 建表

    -- ALTER TABLE test_mybatis   MODIFY COLUMN update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
    
      CREATE TABLE `test_mybatis` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(64) NOT NULL,
      `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
      `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='測(cè)試mybatis的表'
    ;
    
    1. 編寫xml 略
    2. mapper略
    3. service 略

3-集成分頁(yè)插件

  1. 依賴

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
    </dependency>
    
  2. 配置文件修改

    pagehelper.helper-dialect=mysql
    #pagehelper.reasonable=false
    #pagehelper.support-methods-arguments=false
    #pagehelper.params=count=countsql
    
    
  3. 使用插件,在service中查詢之前PageHelper.startPage(pageNum, pageSize);

文章來(lái)源:臨窗旋墨的博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挣惰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌憎茂,老刑警劉巖珍语,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異竖幔,居然都是意外死亡板乙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門拳氢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)募逞,“玉大人,你說(shuō)我怎么就攤上這事馋评》沤樱” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵栗恩,是天一觀的道長(zhǎng)透乾。 經(jīng)常有香客問(wèn)我洪燥,道長(zhǎng)磕秤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任捧韵,我火速辦了婚禮市咆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘再来。我一直安慰自己蒙兰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布芒篷。 她就那樣靜靜地躺著搜变,像睡著了一般。 火紅的嫁衣襯著肌膚如雪针炉。 梳的紋絲不亂的頭發(fā)上挠他,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音篡帕,去河邊找鬼殖侵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镰烧,可吹牛的內(nèi)容都是我干的拢军。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼怔鳖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茉唉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤度陆,失蹤者是張志新(化名)和其女友劉穎魏铅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坚芜,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡览芳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸿竖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沧竟。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缚忧,靈堂內(nèi)的尸體忽然破棺而出悟泵,到底是詐尸還是另有隱情,我是刑警寧澤闪水,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布糕非,位于F島的核電站,受9級(jí)特大地震影響球榆,放射性物質(zhì)發(fā)生泄漏朽肥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一持钉、第九天 我趴在偏房一處隱蔽的房頂上張望衡招。 院中可真熱鬧,春花似錦每强、人聲如沸始腾。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浪箭。三九已至,卻和暖如春辨绊,著一層夾襖步出監(jiān)牢的瞬間奶栖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工邢羔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驼抹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓拜鹤,卻偏偏與公主長(zhǎng)得像框冀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敏簿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345