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

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

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

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

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

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

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

Fluent Mybatis是什么

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

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

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

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

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

<dependencies><!--引入fluent-mybatis運行依賴包,scope為compile-->        <dependency>            <groupId>com.github.atool</groupId>            <artifactId>fluent-mybatis</artifactId>            <version>1.9.3</version>        </dependency>        <!--引入fluent-mybatis-processor,scope設(shè)置為provider編譯需要,運行時不需要-->        <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 '用戶名稱',  `user_age` int NOT NULL DEFAULT '0' COMMENT '用戶年齡',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用戶信息表';

3. 定義PO類

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

4. 編譯生成對應(yīng)的mapper類

mvn clean compile

自動生成如下類:DAW28資訊網(wǎng)——每日最新資訊28at.com

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

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

首先,我們需要配置 Mybatis 的相關(guān)信息,如數(shù)據(jù)源、SQL 會話工廠等。這里,我們使用 Spring Boot 進行配置:DAW28資訊網(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 進行增刪改查的基本操作演示:DAW28資訊網(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);    }}

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

4.2 查詢(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);    }

在這個示例中,我們展示了如何使用 Fluent Mybatis 進行不同類型的查詢操作。我們可以根據(jù)用戶名模糊查詢用戶。DAW28資訊網(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()        );    }}

在這個示例中,我們首先根據(jù) ID 查詢到需要更新的用戶。然后,我們修改用戶的 name 和 age 屬性,并調(diào)用 UserMapper.updateBy() 方法將更新后的用戶信息保存到數(shù)據(jù)庫中。DAW28資訊網(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());    }}

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

4.5 join查詢

@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"); // 輸出查詢字段        List<UserInfoEntity> userInfoEntities = mapper.listPoJos(UserInfoEntity.class, iQuery);        System.out.println(userInfoEntities);    }

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

總結(jié)

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

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

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

上一篇: 一個提出五年的 Node.js 模塊問題,終被解決!

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

標(biāo)簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設(shè)計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 企業(yè)采用CRM系統(tǒng)的11個好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規(guī)模如今超過580
  • 自動化在DevOps中的力量:簡化軟件開發(fā)和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現(xiàn)以下目標(biāo):消除手動和重復(fù)性任務(wù)。簡化流程。在整個軟件開發(fā)生命周期中實現(xiàn)更
  • 騰訊蓋樓,字節(jié)拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更
  • iQOO Neo8系列新品發(fā)布會

    旗艦雙芯 更強更Pro
  • 外交部:美方應(yīng)停止在網(wǎng)絡(luò)安全問題上不負(fù)責(zé)任地指責(zé)他國

      中國外交部今天(16日)舉行例行記者會。會上,有記者問,美國情報官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關(guān)科研成果。 中方對此有何評論?對此
  • 榮耀Magic4 至臻版 首創(chuàng)智慧隱私通話 強勁影音系統(tǒng)

    2022年第一季度臨近尾聲,在該季度內(nèi),許多品牌陸續(xù)發(fā)布自己的最新產(chǎn)品,讓大家從全新的角度來了解當(dāng)今的手機技術(shù)。手機是電子設(shè)備中,更新迭代十分迅速的一款產(chǎn)品,基
Top 主站蜘蛛池模板: 治县。| 诸城市| 沅江市| 泰来县| 宜昌市| 陇南市| 图片| 大同县| 新泰市| 清丰县| 建昌县| 喀喇沁旗| 栾城县| 大理市| 武邑县| 海原县| 乐昌市| 阳高县| 苏尼特右旗| 长沙县| 金沙县| 岳普湖县| 江西省| 万安县| 惠东县| 弋阳县| 永清县| 化隆| 中卫市| 漳州市| 修水县| 固原市| 潞西市| 石狮市| 新沂市| 科尔| 襄樊市| 商南县| 宣城市| 介休市| 普陀区|