国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

開發(fā) 項目管理
Fluent Mybatis 是一個基于 Mybatis 的擴展庫,它提供了更加簡潔、易讀的 API,使得我們能夠更加高效地進行數(shù)據(jù)庫操作。 本文將介紹如何使用 Fluent Mybatis 進行基本的增刪改查操作。

在 Java 項目中,我們經(jīng)常需要與數(shù)據(jù)庫進行交互,而 Mybatis 是一個流行的持久層框架,它可以將 Java 對象映射到 SQL 語句,從而簡化數(shù)據(jù)庫操作。

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

如果放到dao層,就要手動在xml中寫復(fù)雜的sql,用插件自動生成mapper時,會覆蓋xml中的修改,非常讓人頭疼

Fluent Mybatis是什么

Fluent Mybatis 是一個基于 Mybatis 的擴展庫,它提供了更加簡潔、易讀的 API,使得我們能夠更加高效地進行數(shù)據(jù)庫操作。

本文將介紹如何使用 Fluent Mybatis 進行基本的增刪改查操作。

使用 Fluent Mybatis 很簡單,分為以下5步:

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

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

<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") // 定義表名稱
@Data
public 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

自動生成如下類:

圖片圖片

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

首先,我們需要配置 Mybatis 的相關(guān)信息,如數(shù)據(jù)源、SQL 會話工廠等。這里,我們使用 Spring Boot 進行配置:

@ComponentScan(basePackages = "com.test")
@MapperScan("com.test.mapper")
@Configuration
public 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 進行增刪改查的基本操作演示:

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ù)庫中。

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ù)用戶名模糊查詢用戶。

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ù)庫中。

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 刪除用戶。

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作為連接條件。

總結(jié)

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

責(zé)任編輯:武曉燕 來源: 小李哥編程
相關(guān)推薦

2021-01-18 18:42:33

工具調(diào)優(yōu)開發(fā)

2022-03-18 13:59:46

緩存RedisCaffeine

2022-12-20 09:09:27

ViteWebpack

2023-09-07 07:35:59

JS操作網(wǎng)頁

2025-10-28 01:45:00

setTimeouAPI日志

2012-07-19 10:03:32

2025-06-25 08:10:00

screentmux運維

2024-11-12 16:28:34

2025-11-26 02:22:00

2023-08-01 07:45:52

2021-11-19 11:50:48

MyBatisforeachJava

2020-03-04 14:05:35

戴爾

2025-04-02 08:47:23

DOM文檔結(jié)構(gòu)API

2025-07-29 08:05:37

2022-07-15 07:58:18

SteampipeCLI 工具

2023-01-05 07:55:59

Zookeeper服務(wù)注冊

2023-09-27 07:49:23

2024-03-21 08:55:41

享元模式對象內(nèi)存

2020-05-14 13:35:59

開源視頻 技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

欧美中文字幕| 国产农村妇女精品一二区| 亚洲电影在线免费观看| 欧美性受xxxx黑人猛交88| 亚洲三级精品| 亚洲第一精品福利| 日本一区高清| 99久久综合国产精品| 精品国产91亚洲一区二区三区www| 欧美久久亚洲| 日韩经典一区二区三区| 免费福利在线观看| 国产日韩欧美精品一区| 日本在线视频不卡| 久久裸体网站| 欧美二区在线播放| 日本不卡1234视频| 欧美伊人久久大香线蕉综合69| 不卡av免费在线| 国产一区二区美女诱惑| 欧美日本亚洲| 亚洲一级特黄| 成人疯狂猛交xxx| 大陆精大陆国产国语精品| 国产亚洲免费的视频看| 操喷在线视频| 欧美三级视频在线观看 | 警花av一区二区三区| 精品国产亚洲在线| 自拍视频在线网| 国产资源精品在线观看| 国产精选久久久久久| 羞羞免费视频网站| 在线成人超碰| 国产日韩亚洲精品| 久久蜜桃资源一区二区老牛| 91黄色在线看| 精品国产电影一区| 午夜视频在线免费| 日韩h在线观看| a'aaa级片在线观看| 国产亚洲精品免费| 91久热免费在线视频| 日韩欧美xxxx| 激情国产一区二区| 久久人人爽人人爽爽久久| 日韩精品在线视频免费观看| 欧洲精品二区| 国产丝袜欧美中文另类| 77777亚洲午夜久久多人| 免费一区二区三区在线观看| 午夜综合激情| 欧美日本一区二区在线观看| 国产91aaa| а√天堂中文在线资源8| 成人高清在线视频| 99精品视频网站| 轻轻草成人在线| 久久一区二区精品| 亚洲国产电影| 久久久久久91香蕉国产| 欧美精品videossex少妇| 亚洲午夜精品久久久久久app| 国产精品私拍pans大尺度在线 | 欧美三级视频在线观看| 中文字幕日本在线| 日韩视频免费观看高清完整版在线观看| 老司机午夜在线| 亚洲国产精品网站| 日韩有码欧美| 国产69精品久久久久久| 亚洲性视频h| 国产精品无码乱伦| 久久精品人人做人人爽人人| 视频在线91| 欧美一区二区三区免费在线看| 成人免费网站视频| 欧美专区在线视频| 亚洲综合不卡| 美女av免费在线观看| 亚洲国产成人av好男人在线观看| 日韩毛片久久久| 神马久久久久久| 久久一区二区中文字幕| 五月天久久综合网| 日韩毛片一二三区| 超碰在线免费公开| 午夜精品一区二区三区在线视| 在线成人h网| 浮妇高潮喷白浆视频| 狠狠久久亚洲欧美专区| 久久野战av| 亚洲jizzjizz日本少妇| 91小视频免费观看| 午夜视频在线| 4438全国亚洲精品在线观看视频| 丝袜亚洲另类丝袜在线| 少妇一级淫免费放| 欧美一区二区啪啪| 亚洲精品国产动漫| 青青草原网站在线观看| 亚洲不卡av一区二区三区| 成人日韩在线观看| 国产精品乱码| 亚洲日本青草视频在线怡红院| av免费不卡| 亚洲在线一区二区| 国产精品视频你懂的| 免费v片在线观看| 国产精品二区在线观看| 国产精品久久综合| 欧美精品日日操| 福利视频久久| 最近日韩中文字幕| 日本精品在线一区| 日韩欧美在线电影| 91福利社在线观看| 日韩欧美ww| 波多野结衣50连登视频| 亚洲高清av在线| 激情欧美丁香| 特黄特色大片免费视频大全| 不卡av日日日| 久久精品国产一区二区三| 一区二区三区视频国产日韩| 久久久久久欧美| 成人永久看片免费视频天堂| 黄色免费在线观看| 92裸体在线视频网站| 一区二区三区日韩欧美| 国产精品亚洲四区在线观看| 好色先生视频污| 欧美精品一区男女天堂| 9色国产精品| 欧美一区二区三区小说| 国产a级一级片| 日韩av中文在线| 国产一区二区三区的电影 | 免费看日本毛片| 亚洲丁香婷深爱综合| 亚洲午夜在线| 蜜桃视频在线播放| 国产精品扒开腿爽爽爽视频| 日本一区二区三区高清不卡| 国产香蕉久久| 男女裸体影院高潮| 精品视频久久久久久| 奇米精品一区二区三区在线观看| 国内外激情在线| 国产高清在线一区| 欧美日韩成人综合天天影院 | 日韩中文视频免费在线观看| 国产曰批免费观看久久久| 国产精品成人一区二区三区| 一区二区三区丝袜| 激情五月色综合国产精品| 成年人黄视频网站| 欧美亚洲系列| 日本午夜精品一区二区| 在线中文字幕不卡| 精品成人影院| 中文字幕欧美区| 国产激情91久久精品导航| 一区二区精品| 在线观看视频日韩| 91视频一区二区| 日本一区二区免费看| 午夜精品福利一区二区| 国产女优裸体网站| 日本日本精品二区免费| 国产精品免费入口| 成人综合影院| 免费在线高清av| 日本福利午夜视频在线| 黄色激情在线播放| 欧美oldwomenvideos| 日本aⅴ精品一区二区三区| 国产亚洲亚洲| 最新日韩欧美| 日韩在线一二三区| 成人少妇影院yyyy| 洋洋av久久久久久久一区| 成人免费在线观看入口| 日韩av一级大片| 日韩精品免费电影| 日韩欧美视频在线播放| 黄页视频在线91| 日韩欧美999| 精品国产免费人成在线观看| 欧美一级xxx| 精品一区二区国产| 色视频在线免费观看| 天堂av资源在线观看| 日韩一区二区三区视频在线| 免费在线一区观看| 黄色日韩网站| 日本aⅴ中文| 日本精品一区二区三区不卡无字幕| 亚洲精品456在线播放狼人| 国产亚洲成av人在线观看导航|