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

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 boot实现文件上传

    介绍 Spring Boot 是构建数千个 Servlet Web 应用程序的首选框架之一。同时,Spring Boot 集成了所有必需的控件,包括 Servlet API,WebSocket,Jackson,Validation,HttpMessageConverters 等。我们可以非常容易地在 Spring Boot 应用程序中扩展或注入新功能。 在本…

    Java 2023年5月31日
    00
  • Spring security认证两类用户代码实例

    下面是详细讲解“Spring security认证两类用户代码实例”的完整攻略。 1. Spring Security认证两类用户 Spring Security可以认证两类用户:前台用户和后台用户。在实际开发中,这两类用户需要分别进行认证,才能保证系统的安全性。 1.1 前台用户 前台用户是指普通用户,通常需要进行注册、登录等操作。Spring Secur…

    Java 2023年5月20日
    00
  • 简单了解Spring Boot及idea整合jsp过程解析

    下面我来详细讲解一下“简单了解SpringBoot及idea整合jsp过程解析”的完整攻略。 什么是SpringBoot? SpringBoot 是一个基于 Spring 框架的全新框架,旨在简化 Spring 应用程序的创建和开发过程,它采用约定大于配置的原则,自动配置 Spring 和第三方库,提供了一组默认的 Starter 依赖项,可以快速搭建起基于…

    Java 2023年5月15日
    00
  • Java创建内部类对象实例详解

    以下是关于“Java创建内部类对象实例”的完整攻略: 什么是内部类? 内部类是Java中的一种特殊类,它被定义在另一个类的内部,并可以访问该外部类的成员和方法。内部类是Java语言规范中的特性之一,可以为程序设计带来很多便利。 创建内部类的对象实例有哪些方法? 直接使用外部类的对象来创建内部类的对象实例: “` class Outer { class In…

    Java 2023年5月26日
    00
  • 详解Spring框架入门

    下面我将为您详细讲解“详解Spring框架入门”的完整攻略。 1. 什么是Spring框架 Spring框架是一个用于Java应用程序开发的开源框架。它最初由Rod Johnson在2002年创建,旨在提供一种允许Java程序员开发企业级应用程序的框架。Spring框架基于Java语言,使用IoC(Inversion of Control)和AOP(Aspe…

    Java 2023年5月20日
    00
  • springmvc如何进行异常处理

    Spring MVC可以通过统一的异常处理机制来处理应用程序中遇到的异常,统一处理异常可以使应用程序更加健壮,并且在开发过程中可以统计异常信息,方便排查错误。 Spring MVC框架中异常处理是通过HandlerExceptionResolver接口来处理的,在这个接口中我们可以自定义异常处理的方式,这个接口中有两个非常重要的方法:resolveExcep…

    Java 2023年5月27日
    00
  • Java实现酒店客房管理系统

    Java实现酒店客房管理系统完整攻略 需求分析 在进行项目的开发之前,需要先对客户的需求进行分析,明确需要实现的功能。 客房管理:包括房间类型、房间编号、房间状态(已入住、空闲、维修中),查询、添加、删除、修改客房信息等; 客户管理:包括客户姓名、身份证号、联系方式、入住时间等信息; 订单管理:包括下单、取消订单、订单查询等; 财务管理:客户结账等。 数据库…

    Java 2023年5月23日
    00
  • 详解Func与Action区别

    当我们编写C#代码时,经常会遇到Func<T>和Action<T>这两个委托类型。它们都是 C# 环境中的通用委托类型,用于定义具有特定签名的同步方法。虽然它们在某些方面看起来相似,但实际上它们之间有一些重要的区别。 Func与Action的区别 Func和Action的定义 Func:表示一个带有返回值的函数的委托。它可以在不使用自…

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