Java Fluent MyBatis 是一个基于 MyBatis 3 和 Java 8 Lambda 表达式的持久层框架,该框架可以让用户使用最少的代码来完成常用的数据库操作,简化了 MyBatis 的使用,并且支持动态 SQL 语句的构建,提高 SQL 语句的灵活性。
本篇文章将详细介绍如何使用 Java Fluent MyBatis 构建项目和生成代码。
一、项目构建
- 新建 maven 项目
Fluent MyBatis 的项目构建需要 maven 环境的支持,首先需要在本地安装好 maven,并在 IDEA 中创建一个新的 maven 项目。
- 引入依赖
在 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>
- 创建数据库连接
在 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、用户名、密码。
- 新建实体类
在项目中新建一个名为 User 的实体类,用于表示用户信息:
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
}
- 新建 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);
}
- 编写 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>
- 测试
在项目中编写一个测试类,用于测试 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 文件,大大减少了开发人员的代码量。
- 引入插件依赖
在 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>
- 创建配置文件
在项目中新建一个名为 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、用户名、密码。
- 生成代码
在 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技术站