Java Fluent Mybatis实战之构建项目与代码生成篇上

yizhihongxing

Java Fluent MyBatis 是一个基于 MyBatis 3 和 Java 8 Lambda 表达式的持久层框架,该框架可以让用户使用最少的代码来完成常用的数据库操作,简化了 MyBatis 的使用,并且支持动态 SQL 语句的构建,提高 SQL 语句的灵活性。

本篇文章将详细介绍如何使用 Java Fluent MyBatis 构建项目和生成代码。

一、项目构建

  1. 新建 maven 项目

Fluent MyBatis 的项目构建需要 maven 环境的支持,首先需要在本地安装好 maven,并在 IDEA 中创建一个新的 maven 项目。

  1. 引入依赖

在 pom.xml 文件中添加以下依赖:

<!--Fluent MyBatis 的核心依赖-->
<dependency>
    <groupId>org.mybatis.fluent</groupId>
    <artifactId>mybatis-fluent</artifactId>
    <version>${fluent-mybatis.version}</version>
</dependency>

<!--Fluent MyBatis 工具类-->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>${mybatis-generator.version}</version>
</dependency>
  1. 创建数据库连接

在 projectDirectory/src/main/resources 中新建一个名为 mybatis-config.xml 的文件,并在其中配置数据库连接:

<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${db.driver}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/mapper/UserMapper.xml"/>
  </mappers>
</configuration>

其中,${db.driver}、${db.url}、${db.username}、${db.password} 分别为你的数据库驱动、URL、用户名、密码。

  1. 新建实体类

在项目中新建一个名为 User 的实体类,用于表示用户信息:

import lombok.Data;

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}
  1. 新建 DAO 接口

在项目中新建一个名为 UserMapper 的接口,该接口用于操作 User 实体类对应的数据库表:

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.mybatis.fluent.Query;
import org.mybatis.fluent.Update;
import java.util.List;

@Mapper
public interface UserMapper {
    Query<User> selectByExample();
    Query<User> selectByExample(User example);
    Query<User> selectByExampleSelective(User example);
    Query<User> selectByExampleWithLimit();
    Query<User> selectByExampleWithLimit(User example);
    Query<User> selectByPrimaryKey(Object id);
    Query<User> selectByPrimaryKey(@Param("columns") List<String> columns);
    Update<User> updateByExample();
    Update<User> updateByExample(User example);
    Update<User> updateByExampleSelective(User example);
    Update<User> updateByPrimaryKey();
    Update<User> updateByPrimaryKey(User example);
}
  1. 编写 Mapper XML

在项目中新建一个名为 UserMapper.xml 的文件,用于编写 UserMapper 的 SQL 语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.entity.User">
        <id column="id" property="id" />
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, name, age
    </sql>
    <select id="selectByExample" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from user
    </select>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">
        select
        <include refid="Base_Column_List"/>
        from user
        where id = #{id,jdbcType=BIGINT}
    </select>
    <update id="updateByPrimaryKey" parameterType="com.example.entity.User">
        update user
        <set>
            <if test="name != null">name = #{name,jdbcType=VARCHAR},</if>
            <if test="age != null">age = #{age,jdbcType=INTEGER},</if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>
</mapper>
  1. 测试

在项目中编写一个测试类,用于测试 UserMapper 的 SQL 语句是否正确:

import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;

public class UserMapperTest {
    @Test
    public void testUserMapper() {
        InputStream inputStream = getClass().getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sessionFactory.openSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        List<User> userList = mapper.selectByExample().limit(10).list();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

以上代码完成了基本的项目构建和配置,可以正常使用 UserMapper 对数据库进行 CRUD 操作。

二、代码生成

Fluent MyBatis 可以通过 mybatis-generator 插件来自动生成实体类、DAO 接口和 Mapper XML 文件,大大减少了开发人员的代码量。

  1. 引入插件依赖

在 pom.xml 文件中添加以下插件依赖:

<build>
  <plugins>
    <plugin>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>${mybatis-generator-plugin.version}</version>
      <configuration>
        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
        <overwrite>true</overwrite>
        <verbose>true</verbose>
      </configuration>
      <dependencies>
        <!--Fluent MyBatis 整合插件-->
        <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>${mybatis-generator.version}</version>
        </dependency>
        <!--Fluent MyBatis 工具类-->
        <dependency>
          <groupId>org.mybatis.fluent</groupId>
          <artifactId>mybatis-fluent</artifactId>
          <version>${fluent-mybatis.version}</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>
  1. 创建配置文件

在项目中新建一个名为 generatorConfig.xml 的文件,用于配置代码生成的相关信息:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
  <context id="default" targetRuntime="MyBatis3">
    <commentGenerator>
      <property name="suppressDate" value="true"/>
      <property name="suppressAllComments" value="true"/>
    </commentGenerator>
    <jdbcConnection driverClass="${db.driver}" connectionURL="${db.url}" userId="${db.username}" password="${db.password}">
    </jdbcConnection>
    <javaTypeResolver>
      <property name="forceBigDecimals" value="false"/>
    </javaTypeResolver>

    <!-- 生成Pojo类,即实体类 -->
    <javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java">
      <property name="enableSubPackages" value="false"/>
      <property name="trimStrings" value="true"/>
    </javaModelGenerator>

    <!-- 生成Mapper.xml文件 -->
    <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources">
      <property name="enableSubPackages" value="false"/>
    </sqlMapGenerator>

    <!-- 生成Mapper接口,即DAO类 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.dao" targetProject="src/main/java">
      <property name="enableSubPackages" value="false"/>
    </javaClientGenerator>

    <!-- 按照表名生成实体类和Mapper文件的对应关系 -->
    <table schema="test" tableName="user">
      <property name="useActualColumnNames" value="false"/>
      <generatedKey column="id" sqlStatement="JDBC" identity="true"/>
    </table>
  </context>
</generatorConfiguration>

其中,${db.driver}、${db.url}、${db.username}、${db.password} 分别为你的数据库驱动、URL、用户名、密码。

  1. 生成代码

在 IDEA 的 Maven Projects 窗口中运行 mybatis-generator:generate 命令,即可自动生成实体类、DAO 接口和 Mapper XML 文件。示例命令:

mvn mybatis-generator:generate

执行完成后,可以在项目的 src/main/java 目录下看到生成的实体类和 DAO 接口,在 src/main/resources 目录下看到生成的 Mapper XML 文件。

通过以上代码,我们就能够使用 Java Fluent MyBatis 完成项目的构建和代码生成,让开发更为高效、便捷。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Fluent Mybatis实战之构建项目与代码生成篇上 - Python技术站

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

相关文章

  • 详解使用Spring Security进行自动登录验证

    使用Spring Security进行自动登录验证可以分为以下几个步骤: 1、添加Spring Security依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.security</groupId> <artifactId>sprin…

    Java 2023年5月20日
    00
  • java数据库连接池新手入门一篇就够了,太简单了!

    下面是关于“java数据库连接池新手入门”的完整攻略,共分为以下几个部分: 1. 关于数据库连接池 在使用Java进行数据库操作的时候,为了避免频繁的数据库连接和关闭操作,我们需要使用到数据库连接池。数据库连接池是一种管理数据库连接的机制,把多个数据库连接放入池中,按照固定的管理策略对多个连接进行统一管理。 使用数据库连接池的好处在于:- 节省了数据库打开和…

    Java 2023年5月19日
    00
  • java获取微信accessToken的方法

    Java获取微信accessToken的方法 微信accessToken是通过微信公众平台开发者中心生成的,用于公众号的基础服务。通过接口获取accessToken可以进行一些高级接口的操作。本文主要介绍在Java中如何获取微信accessToken。 1. 请求微信接口获取accessToken 1.1 请求地址 微信接口请求地址:https://api.…

    Java 2023年5月23日
    00
  • Spring Boot使用Schedule实现定时任务的方法

    下面是详细的“Spring Boot使用Schedule实现定时任务的方法”的攻略: 一、概述 在Spring Boot中,我们可以使用Spring Scheduler实现简单的定时任务。Spring Scheduler是Spring框架中的一个轻量级、基于内存的定时任务框架,可以方便地实现定时任务。在本文中,我们将详细介绍如何在Spring Boot中使用…

    Java 2023年5月20日
    00
  • Java项目的目录结构详解

    下面我来详细讲解Java项目的目录结构: 1. 为什么需要规范的目录结构 在一个Java项目中使用规范的目录结构,可以帮助我们清晰地组织我们写的代码,管理项目中的不同模块,提高我们的项目管理和团队协作效率。 2. Java项目的目录结构 下面是Java项目的目录结构示意图: project ├── src │ ├── main │ │ ├── java # …

    Java 2023年5月20日
    00
  • Apache Maven3.6.0的下载安装和环境配置(图文教程)

    下面我会详细讲解 “Apache Maven3.6.0的下载安装和环境配置(图文教程)” 的完整攻略,包括安装步骤和环境配置。 下载Apache Maven 3.6.0 首先,我们需要到maven的官方网站 https://maven.apache.org/download.cgi 下载 Maven 3.6.0 的安装包。 根据您的操作系统下载相应的安装包,…

    Java 2023年5月20日
    00
  • Java基于动态规划法实现求最长公共子序列及最长公共子字符串示例

    Java基于动态规划法实现求最长公共子序列及最长公共子字符串示例攻略 什么是最长公共子序列? 两个序列 X 和 Y 的“公共子序列”,是指存在一个序列 Z,Z 中元素既在 X 中,也在 Y 中,在 X 和 Y 中出现的次序分别相同,且 Z 的长度最大。例如序列“12345”和“1245”的公共子序列有“12”、“145”等,其中“145”最长,长度为 3,即…

    Java 2023年5月26日
    00
  • java中list的用法和实例讲解

    下面是“java中list的用法和实例讲解”的完整攻略。 1. List的简介 List是Java中最常用的集合类型之一,它允许存储重复元素,并按照插入顺序维护元素的顺序。List接口是Collection接口的子接口。List接口有许多不同的实现方式,比如ArrayList、LinkedList等。 2. List的用法 2.1 创建List 创建List…

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