Fluent Mybatis让你摆脱Xml文件的技巧

yizhihongxing

Fluent Mybatis是Mybatis框架的一种替代方案,基于Java 8中的Lambda表达式和Stream API,使得编写Mybatis映射文件变得更加简单易用。本篇文章将为你介绍如何使用Fluent Mybatis进行Mybatis开发,让你摆脱Xml文件的束缚。

一、基本概念

1.1 数据库连接

在Fluent Mybatis中,数据库连接的配置跟Mybatis一样都是通过XML文件进行配置,并通过DataSourceBuilder创建出对应的javax.sql.DataSource对象。这些配置和Mybatis中的配置一样,本篇文章就不再赘述。

1.2 实体类

在Fluent Mybatis中,实体类就是与对应表结构信息一一对应的Java Bean类,用于操作数据库中的记录。Fluent Mybatis通过使用Java 8中的Lambda表达式和Stream API实现简单易用的数据操作,如预编译SQL语句、将查询结果自动映射到Java Bean对象上等。

1.3 数据访问层

在Fluent Mybatis中,数据访问层是对数据持久化层的封装,用于实现数据访问、数据查询、数据插入等操作,单个访问层对应一个Java Bean类。Fluent Mybatis通过使用Java 8中的Lambda表达式和Stream API实现简单易用的数据操作。

二、使用Fluent Mybatis

2.1 添加依赖

在使用Fluent Mybatis之前,需要在Maven或Gradle项目中添加Fluent Mybatis依赖。

<dependency>
    <groupId>org.mybatis.fluent</groupId>
    <artifactId>mybatis-fluent</artifactId>
    <version>${mybatis.fluent.version}</version>
</dependency>

2.2 创建实体类

假设我们有一个数据库表叫user,对应的Java Bean类为User.java,字段包括idnameage。其对应的Java类如下:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {
    private Long id;
    private String name;
    private Integer age;
}

2.3 创建数据访问层

假设我们需要创建一个UserDao来完成对user表的数据操作。在Fluent Mybatis中,要使用的方法都在Mapper类中实现,需要继承具体的Mapper类。Mapper类由Fluent Mybatis提供的MapperBuilder创建。

public interface UserDao extends Mapper<User> {

}

具有通用CRUD操作,如果有自定义的SQL查询需要的话,可以添加自定义的Mapper方法,如下:

public interface UserDao extends Mapper<User> {

    @Select("SELECT * FROM user WHERE name LIKE #{name} LIMIT #{start}, #{limit}")
    List<User> findByLikeName(@Param("name") String name, @Param("start") int start, @Param("limit") int limit);

}

2.4 创建MyBatis配置文件

在Fluent Mybatis中,不需要编写MyBatis XML配置文件,只需要创建一个类来配置数据源和数据访问层。

@Configuration
public class MybatisConfiguration {

    @Bean
    public DataSource dataSource() {
        return new DataSourceBuilder()
                .url("jdbc:mysql://localhost:3306/mybatis_demo")
                .username("root")
                .password("123456")
                .driverClassName("com.mysql.jdbc.Driver")
                .build();
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
        return new FluentConfiguration()
                .dataSource(dataSource)
                .build();
    }

}

2.5 编写测试用例

在Fluent Mybatis中,使用Java 8中的lambda表达式和Stream API来实现数据访问操作,比如查询所有用户的代码如下:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MybatisApplication.class)
public class UserDaoTest {

    @Autowired
    private UserDao userDao;

    @Test
    public void testSelectList() {
        List<User> userList = userDao.selectAll().stream()
                .map(QueryResult::toObject)
                .collect(Collectors.toList());
        Assert.assertEquals(userList.size(), 6);
    }

}

是不是非常简单呢。通过使用Fluent Mybatis,我们可以摆脱Mybatis XML文件的束缚,更加简单快捷地完成数据访问操作。

三、使用MyBatis XML和Fluent Mybatis的结合

在Fluent Mybatis中,虽然不需要编写MyBatis XML文件,但是当遇到一些复杂查询时,仍然变得比较困难。此时,我们可以通过结合使用MyBatis XML和Fluent Mybatis,来实现更复杂的数据访问操作。

以用户表为例,我们想要通过用户名来模糊查询,查询结果按照用户ID进行排序。这时,我们可以写一个包含复杂查询语句的XML文件,然后在Fluent Mybatis中调用这个XML文件中的语句。参考代码如下:

3.1 编写XML文件

<select id="selectByLikeName" resultMap="BaseResultMap" parameterType="java.lang.String">
    SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%') ORDER BY id ASC
</select>

3.2 创建数据访问层

public interface UserDao extends Mapper<User> {

    List<User> selectByLikeName(String name);

}

3.3 使用MapperBuilder的方法访问

userDao.useSqlSession(sqlSession -> {
    List<User> userList = sqlSession.selectList("selectByLikeName", "李");
    return userList.stream().map(QueryResult::toObject).collect(Collectors.toList());
});

可以看到,在Fluent Mybatis中,调用XML文件的语句极其简单,在SQLSession对象中,我们可以直接调用selectOneselectList 等方法来执行SQL语句。

四、总结

通过本篇文章的简单介绍,相信大家已经能够初步了解使用Fluent Mybatis来完成数据访问操作的流程。可以看到,Fluent Mybatis使Mybatis的使用更加简单,代码更少且更加直观,可以使开发人员更聚焦于业务逻辑的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Fluent Mybatis让你摆脱Xml文件的技巧 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 敏捷IT治理和COBIT之间的区别

    敏捷IT治理和COBIT是两种不同的IT治理框架。 敏捷IT治理 敏捷IT治理是指在IT项目开发和管理中运用敏捷方法论,以快速响应业务需求并持续提高IT项目交付质量和效率。敏捷IT治理强调快速迭代、多方面合作、持续学习和改进的理念。 敏捷IT治理的优势在于能够快速响应用户需求、提高项目周期和交付质量、降低成本等。举个例子,某公司为了推出一款新产品,采用敏捷I…

    database 2023年3月27日
    00
  • MySQL中dd::columns表结构转table过程及应用详解

    MySQL中dd::columns表结构转table过程及应用详解 在MySQL中,我们经常需要获取某张表的结构信息,这时可以使用SHOW COLUMNS FROM table_name命令来实现。但是,在某些场景下,我们需要将多张表的结构信息保存在一个单独的表中进行统计分析,因此需要将SHOW COLUMNS命令的结果转为表格式,这时就可以使用dd::co…

    database 2023年5月22日
    00
  • 通过yum方式安装mySql数据库的全过程

    以下是通过yum方式安装MySQL数据库的全过程攻略: 1. 更新yum库 使用更新命令更新yum库: sudo yum update 2. 安装MySQL服务器 使用下面的命令安装MySQL服务器: sudo yum install mysql-server 3. 启动MySQL服务器 使用下面的命令启动MySQL服务器: sudo systemctl s…

    database 2023年5月22日
    00
  • SQL – 连接(内连接,左连接,右连接和全连接)

    请看下面的完整攻略。 SQL连接 在SQL中,连接(Join)是将两个或多个表中的行结合在一起,并基于这些表的关联列创建一个结果集。连接可以分为以下几种类型:内连接,左连接,右连接和全连接。 内连接(INNER JOIN) 内连接只返回那些两个表中匹配的行。也就是说,只有在两个表中都存在的记录才会被返回。内连接通常由一个JOIN关键字和一个ON子句来指定连接…

    database 2023年3月27日
    00
  • MySQL必备的常见知识点汇总整理

    MySQL必备的常见知识点汇总整理 MySQL是一款常用的关系型数据库管理系统,具备高效、安全、可靠、易于使用等特性。它可以通过命令行和可视化工具进行管理和操作。为了让用户更好地理解MySQL,本文从必备的常见知识点出发进行汇总整理。 数据类型 MySQL支持多种数据类型,包括整型、浮点型、字符型、日期型等。数据类型不仅影响到数据在内存中的存储形式,还会影响…

    database 2023年5月22日
    00
  • MYSQL数据库-SELECT详解

    将SQL文件导入数据库中   $   source /url/file_name.sql ======================================================= SELECT基本格式:   $ SELECT col FROM t_name WHERE condition; =======================…

    MySQL 2023年4月13日
    00
  • 一条慢SQL语句引发的改造之路

    一条慢SQL语句引发的改造之路 背景 当网站访问量逐渐增大时,通常会面临以下问题: 网页响应速度明显变慢 数据库查询变得缓慢 此时常用的应对方法就是对慢查询进行分析与优化。 审视慢查询 为了寻找慢查询,我们首先需要启用MySQL数据库的慢查询日志功能,并设置慢查询日志阈值(一般设置为1秒)。在一段时间使用后,根据慢查询日志输出的结果,查看哪些SQL语句执行时…

    database 2023年5月19日
    00
  • mybatis中oracle实现分页效果实例代码

    下面是详细讲解“mybatis中oracle实现分页效果实例代码”的完整攻略: 一、前置条件 要实现Mybatis中Oracle的分页效果,需要首先满足以下前置条件: 1. 使用Mybatis Mybatis是一个优秀的Java持久层框架,如果你还不熟悉Mybatis的基本使用和配置,请先完成相关的学习。 2. 使用Oracle数据库 Oracle是一种强大…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部