日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

你還在用Mybatis?試試這款神器,縱享絲滑

來(lái)源: 責(zé)編: 時(shí)間:2024-03-26 17:40:05 239觀看
導(dǎo)讀在 Java 項(xiàng)目中,我們經(jīng)常需要與數(shù)據(jù)庫(kù)進(jìn)行交互,而 Mybatis 是一個(gè)流行的持久層框架,它可以將 Java 對(duì)象映射到 SQL 語(yǔ)句,從而簡(jiǎn)化數(shù)據(jù)庫(kù)操作。不過(guò)在使用 Mybatis 做開(kāi)發(fā)時(shí),最頭痛的事情就是處理復(fù)雜業(yè)務(wù)查詢(xún),如果將業(yè)務(wù)轉(zhuǎn)

在 Java 項(xiàng)目中,我們經(jīng)常需要與數(shù)據(jù)庫(kù)進(jìn)行交互,而 Mybatis 是一個(gè)流行的持久層框架,它可以將 Java 對(duì)象映射到 SQL 語(yǔ)句,從而簡(jiǎn)化數(shù)據(jù)庫(kù)操作。ips28資訊網(wǎng)——每日最新資訊28at.com

不過(guò)在使用  Mybatis 做開(kāi)發(fā)時(shí),最頭痛的事情就是處理復(fù)雜業(yè)務(wù)查詢(xún),如果將業(yè)務(wù)轉(zhuǎn)移到service層,就會(huì)增加訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù)。

如果放到dao層,就要手動(dòng)在xml中寫(xiě)復(fù)雜的sql,用插件自動(dòng)生成mapper時(shí),會(huì)覆蓋xml中的修改,非常讓人頭疼ips28資訊網(wǎng)——每日最新資訊28at.com

Fluent Mybatis是什么

Fluent Mybatis 是一個(gè)基于 Mybatis 的擴(kuò)展庫(kù),它提供了更加簡(jiǎn)潔、易讀的 API,使得我們能夠更加高效地進(jìn)行數(shù)據(jù)庫(kù)操作。ips28資訊網(wǎng)——每日最新資訊28at.com

本文將介紹如何使用 Fluent Mybatis 進(jìn)行基本的增刪改查操作。ips28資訊網(wǎng)——每日最新資訊28at.com

使用 Fluent Mybatis 很簡(jiǎn)單,分為以下5步:ips28資訊網(wǎng)——每日最新資訊28at.com

1. 環(huán)境準(zhǔn)備

在開(kāi)始使用 Fluent Mybatis 之前,我們需要確保已經(jīng)安裝了 Java 開(kāi)發(fā)環(huán)境、Maven 以及 MySQL 數(shù)據(jù)庫(kù)。接下來(lái),我們需要在項(xiàng)目的 pom.xml 文件中添加 Fluent Mybatis 的依賴(lài):ips28資訊網(wǎng)——每日最新資訊28at.com

<dependencies><!--引入fluent-mybatis運(yùn)行依賴(lài)包,scope為compile-->        <dependency>            <groupId>com.github.atool</groupId>            <artifactId>fluent-mybatis</artifactId>            <version>1.9.3</version>        </dependency>        <!--引入fluent-mybatis-processor,scope設(shè)置為provider編譯需要,運(yùn)行時(shí)不需要-->        <dependency>            <groupId>com.github.atool</groupId>            <artifactId>fluent-mybatis-processor</artifactId>            <version>1.9.3</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>            <version>2.6.2</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.30</version>        </dependency></dependencies>

2. 定義表結(jié)構(gòu)

CREATE TABLE `user_info` (  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',  `user_name` varchar(64) DEFAULT NULL COMMENT '用戶(hù)名稱(chēng)',  `user_age` int NOT NULL DEFAULT '0' COMMENT '用戶(hù)年齡',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用戶(hù)信息表';

3. 定義PO類(lèi)

@FluentMybatis(table = "user_info") // 定義表名稱(chēng)@Datapublic class UserInfoEntity extends RichEntity {    private Long id;    private String userName;    private Integer userAge;    @Override    public Class<? extends IEntity> entityClass() {        return UserInfoEntity.class;    }}

4. 編譯生成對(duì)應(yīng)的mapper類(lèi)

mvn clean compile

自動(dòng)生成如下類(lèi):ips28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ips28資訊網(wǎng)——每日最新資訊28at.com

5. 配置數(shù)據(jù)源

首先,我們需要配置 Mybatis 的相關(guān)信息,如數(shù)據(jù)源、SQL 會(huì)話工廠等。這里,我們使用 Spring Boot 進(jìn)行配置:ips28資訊網(wǎng)——每日最新資訊28at.com

@ComponentScan(basePackages = "com.test")@MapperScan("com.test.mapper")@Configurationpublic class DataSourceConfig {    @Bean    public DataSource dataSource() {        final HikariDataSource dataSource = new HikariDataSource();        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8");        dataSource.setUsername("root");        dataSource.setPassword("1234");        return dataSource;    }    /**     * 定義mybatis的SqlSessionFactoryBean     *     * @param dataSource     * @return     */    @Bean    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        return bean;    }    @Bean    public MapperFactory mapperFactory() {        return new MapperFactory();    }}

如何使用 Fluent Mybatis?

下面我們使用 Fluent Mybatis 進(jìn)行增刪改查的基本操作演示:ips28資訊網(wǎng)——每日最新資訊28at.com

4.1 插入(Insert)

public class UserServiceTest {    @Autowired    private UserInfoMapper mapper;        @Test    public void insert() {        UserInfoEntity entity = new UserInfoEntity();        entity.setUserAge(10);        entity.setUserName("zhangsan");        mapper.insert(entity);    }}

在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)新的 UserInfoEntity 對(duì)象,并設(shè)置了其 userName 和 userAge 屬性。然后,我們調(diào)用 UserInfoMapper.insert(entity) 方法將新用戶(hù)插入到數(shù)據(jù)庫(kù)中。ips28資訊網(wǎng)——每日最新資訊28at.com

4.2 查詢(xún)(Select)

public class UserService {    @Autowired    private UserInfoMapper mapper;        @Test    public void select() {        UserInfoEntity entity = mapper.findOne(mapper.query()                .where.userName().like("zhangsan").end()                .limit(1));        System.out.println(entity);    }

在這個(gè)示例中,我們展示了如何使用 Fluent Mybatis 進(jìn)行不同類(lèi)型的查詢(xún)操作。我們可以根據(jù)用戶(hù)名模糊查詢(xún)用戶(hù)。ips28資訊網(wǎng)——每日最新資訊28at.com

4.3 更新(Update)

public class UserService {    @Autowired    private UserInfoMapper mapper;    @Test    public void update() {        mapper.updateBy(mapper.updater()                .set.userName().is("lisi")                .set.userAge().is(20).end()                .where.id().eq(1L).end()        );    }}

在這個(gè)示例中,我們首先根據(jù) ID 查詢(xún)到需要更新的用戶(hù)。然后,我們修改用戶(hù)的 name 和 age 屬性,并調(diào)用 UserMapper.updateBy() 方法將更新后的用戶(hù)信息保存到數(shù)據(jù)庫(kù)中。ips28資訊網(wǎng)——每日最新資訊28at.com

4.4 刪除(Delete)

public class UserService {    @Autowired    private UserInfoMapper mapper;    @Test    public void delete() {        mapper.delete(mapper.query()                .where.id().eq(1L).end());    }}

在這個(gè)示例中,我們展示了如何使用 Fluent Mybatis 進(jìn)行刪除操作。我們可以根據(jù) ID 刪除用戶(hù)。ips28資訊網(wǎng)——每日最新資訊28at.com

4.5 join查詢(xún)

@Test    public void joinQuery() {        JoinBuilder<FreeQuery> joinBuilder = null;        UserInfoQuery leftQuery = UserInfoQuery.query().selectAll();        UserInfoQuery rightQuery = UserInfoQuery.query().select.id("right_id").end(); // 添加別名        joinBuilder = JoinBuilder.from(leftQuery).join(rightQuery).onEq("id", "id").endJoin().build(); // join條件        FreeQuery iQuery = new FreeQuery(joinBuilder.build(), "sub").select("id", "user_name", "user_age"); // 輸出查詢(xún)字段        List<UserInfoEntity> userInfoEntities = mapper.listPoJos(UserInfoEntity.class, iQuery);        System.out.println(userInfoEntities);    }

在這個(gè)示例中,我們展示了如何使用 Fluent Mybatis 進(jìn)行join查詢(xún)操作。我們將表user_info自身進(jìn)行join,以id作為連接條件。ips28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

通過(guò)以上示例,我們可以看到 Fluent Mybatis 提供了一套簡(jiǎn)潔、易讀的 API,使得我們能夠更加高效地進(jìn)行數(shù)據(jù)庫(kù)操作。同時(shí),它還支持鏈?zhǔn)骄幊蹋尨a更加簡(jiǎn)潔。如果你正在使用 Mybatis 進(jìn)行數(shù)據(jù)庫(kù)操作,那么不妨嘗試一下 Fluent Mybatis,它或許會(huì)給你帶來(lái)更好的開(kāi)發(fā)體驗(yàn)。ips28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79451-0.html你還在用Mybatis?試試這款神器,縱享絲滑

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 一個(gè)提出五年的 Node.js 模塊問(wèn)題,終被解決!

下一篇: 20k級(jí)別前端是怎么使用LocalStorage的,想知道嗎?

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒(méi)有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶(hù)評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • 6月安卓手機(jī)好評(píng)榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性?xún)r(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年6月1日至6月30日,僅限國(guó)內(nèi)市場(chǎng)。第一名:魅族20 Pro好評(píng)率:95%5月份的時(shí)候魅族20 Pro就是
  • 多線程開(kāi)發(fā)帶來(lái)的問(wèn)題與解決方法

    使用多線程主要會(huì)帶來(lái)以下幾個(gè)問(wèn)題:(一)線程安全問(wèn)題  線程安全問(wèn)題指的是在某一線程從開(kāi)始訪問(wèn)到結(jié)束訪問(wèn)某一數(shù)據(jù)期間,該數(shù)據(jù)被其他的線程所修改,那么對(duì)于當(dāng)前線程而言,該線程
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(chǔ)(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來(lái),我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過(guò)程。注意,如果白話中不小心提到相關(guān)代
  • 當(dāng)家的盒馬,加速謀生

    來(lái)源 | 價(jià)值星球Planet作者 | 歸去來(lái)自己&ldquo;當(dāng)家&rdquo;的盒馬,開(kāi)始加速謀生了。據(jù)盒馬官微消息,盒馬計(jì)劃今年開(kāi)放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 東方甄選單飛:有些鳥(niǎo)注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動(dòng)已在近日順利收官。成立后一年多時(shí)間里,東方甄選要脫離抖音自立門(mén)戶(hù)的傳聞不絕于耳,&ldquo;7
  • 2299元起!iQOO Pad明晚首銷(xiāo):性能最強(qiáng)天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會(huì),除了首發(fā)安卓最強(qiáng)旗艦處理器的iQOO Neo8系列新機(jī)外,還在發(fā)布會(huì)上推出了旗下首款平板電腦——iQOO Pad,其最大的賣(mài)點(diǎn)
  • OPPO K11評(píng)測(cè):旗艦級(jí)IMX890加持 2000元檔最強(qiáng)影像手機(jī)

    【Techweb評(píng)測(cè)】中端機(jī)型用戶(hù)群體巨大,占了中國(guó)目前手機(jī)市場(chǎng)的大頭,一直以來(lái)都是各手機(jī)品牌的“必爭(zhēng)之地”,其中OPPO K系列機(jī)型一直以來(lái)都以高品質(zhì)、
  • Windows 11發(fā)布,微軟一改往常對(duì)老機(jī)型開(kāi)放的態(tài)度

    距離 Windows 11 發(fā)布已經(jīng)過(guò)去一周,在過(guò)去一周里,很多數(shù)碼愛(ài)好者圍繞其對(duì) Android 應(yīng)用的支持、對(duì)老機(jī)型的升級(jí)問(wèn)題展開(kāi)了激烈討論。與以往不同的是,在這次大
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美 日韩 国产 一区| 亚洲免费观看高清在线观看 | 欧美巨乳波霸| 欧美激情一区二区三区在线| 欧美四级在线| 国产欧美亚洲一区| 亚洲第一级黄色片| 国产精品99久久久久久宅男 | 校园激情久久| 久久中文字幕一区二区三区| 欧美精品在线观看| 国产精品网站一区| 一区二区视频欧美| 亚洲欧洲一区二区天堂久久| 亚洲一区免费在线观看| 久久人人爽人人爽| 欧美日韩在线一区二区三区| 国产亚洲欧美一区在线观看| 亚洲精品国产精品久久清纯直播| 亚洲一区二区三区成人在线视频精品| 久久精品导航| 欧美人体xx| 国产综合色精品一区二区三区| 亚洲精品一级| 久久本道综合色狠狠五月| 欧美精品日韩一区| 国产伪娘ts一区 | 久久九九热re6这里有精品| 欧美激情一区| 国产视频久久久久| 亚洲美女黄网| 久久久精品五月天| 欧美午夜电影网| 在线免费观看一区二区三区| 国产一区观看| 一区二区三区欧美在线观看| 久久色中文字幕| 国产精品乱码妇女bbbb| 亚洲国产欧美一区二区三区久久 | 欧美在线免费观看亚洲| 欧美日韩国产页| 合欧美一区二区三区| 亚洲一区二区三区视频播放| 美女91精品| 国产欧美日韩高清| 亚洲最新色图| 免费观看久久久4p| 国产亚洲精品成人av久久ww| 一二三四社区欧美黄| 免费成人美女女| 国产在线一区二区三区四区| 亚洲图片欧美一区| 欧美极品欧美精品欧美视频| 好看的亚洲午夜视频在线| 亚洲影院高清在线| 欧美日韩大片一区二区三区| 亚洲第一在线视频| 久久精品毛片| 国产精品丝袜白浆摸在线| 一区二区三区四区蜜桃| 欧美国产日韩精品| 亚洲电影免费观看高清完整版在线| 欧美一级在线视频| 国产精品久久久免费| 宅男噜噜噜66一区二区| 欧美精品在线网站| 亚洲黄色成人久久久| 久久嫩草精品久久久精品| 国产一区二区福利| 久久国产精品99国产精| 国产九九视频一区二区三区| 亚洲午夜日本在线观看| 欧美日韩国产二区| 欧美gay视频激情| 国产亚洲精品美女| 欧美在线视频日韩| 国产欧美综合在线| 在线视频国内自拍亚洲视频| 久久精品国产96久久久香蕉| 国产伦理精品不卡| 午夜精品久久久久久久99樱桃| 国产精品福利在线观看网址| 这里只有精品视频在线| 欧美日韩伊人| 在线视频精品| 国产精品久久久久77777| 亚洲性图久久| 国产精品国产三级国产专播品爱网 | 欧美一区二区三区婷婷月色| 国产免费成人| 午夜天堂精品久久久久| 国产乱人伦精品一区二区| 亚洲欧美在线免费| 国产丝袜一区二区三区| 欧美伊人久久久久久午夜久久久久| 国产精品亚发布| 欧美亚洲一区二区在线| 国产自产精品| 午夜精品99久久免费| 国产精品久久久久一区二区三区共 | 欧美激情a∨在线视频播放| 91久久极品少妇xxxxⅹ软件| 欧美激情国产日韩| 一本一本久久a久久精品综合妖精| 国产精品xxx在线观看www| 亚洲综合三区| 国产午夜精品美女视频明星a级| 欧美一区影院| 激情亚洲成人| 免费成人av在线看| 99国产精品久久久久久久| 欧美三级视频在线| 亚洲欧美成人一区二区在线电影| 国产精品亚洲а∨天堂免在线| 欧美亚洲一区二区在线| 在线观看国产成人av片| 欧美护士18xxxxhd| 国产精品99久久久久久久女警| 国产精品视频99| 久久久国产精品亚洲一区| 亚洲国产高清高潮精品美女| 欧美日韩国产美女| 午夜精品久久久久久久男人的天堂| 国产一区二区0| 欧美77777| aa日韩免费精品视频一| 国产欧美激情| 老司机精品久久| 9i看片成人免费高清| 国产精品一二一区| 久久亚洲一区二区| 99国产精品自拍| 国产日韩精品在线观看| 欧美jizz19性欧美| 亚洲一区二区视频在线观看| 韩国视频理论视频久久| 欧美日韩国产精品自在自线| 亚洲欧美视频在线观看| 一区二区三区在线看| 欧美日韩国产一区| 欧美专区亚洲专区| 亚洲乱码国产乱码精品精天堂| 国产精品久久久久久久久久ktv| 久久精品五月| 99这里只有久久精品视频| 欧美精品在线视频观看| 欧美一区二区三区男人的天堂| 亚洲激情av| 国产农村妇女精品一区二区| 欧美成人精品福利| 亚洲欧美一区二区激情| 亚洲国产一区二区三区青草影视| 国产精品国产福利国产秒拍| 久久色在线观看| 亚洲一区二区少妇| 亚洲电影成人| 国产毛片一区二区| 欧美激情成人在线| 欧美在线不卡| 一区二区高清在线| 在线观看日韩国产| 国产精品亚洲综合久久| 欧美激情女人20p| 久久国产精品黑丝| 中日韩高清电影网| 亚洲国产精品www| 国产日韩精品一区二区三区在线 | 国产精品欧美激情| 欧美激情1区2区| 久久久综合视频| 欧美一二三区在线观看| 亚洲精品欧美精品| 韩国视频理论视频久久| 国产精品视频最多的网站| 欧美伦理a级免费电影| 久久亚洲视频| 久久精品动漫| 午夜久久久久久| 99在线精品视频在线观看| 在线看日韩欧美| 国产色视频一区| 国产欧美精品在线观看| 亚洲看片网站| 欧美日韩亚洲综合| 久久综合色婷婷| 亚洲激情电影在线| 欧美女人交a| 亚洲国产精品久久久久婷婷老年| 久久久亚洲影院你懂的| 国产一区二区丝袜高跟鞋图片| 亚洲最新视频在线| 欧美黄色大片网站| 亚洲欧美三级在线| 亚洲日本视频| 国产欧美日韩精品一区| 欧美.com| 久久成人综合视频| 亚洲免费精彩视频| 亚洲第一区色| 欧美日韩不卡在线| 六月婷婷久久| 亚洲精品日韩久久| 欧美激情精品久久久久久久变态| 一区二区精品国产|