Mybatis官方生成器学习入门
2024/11/7 6:03:29
本文主要是介绍Mybatis官方生成器学习入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文介绍了MyBatis的基本概念、工作原理以及MyBatis官方生成器的作用和使用场景。文章详细讲解了安装和配置MyBatis官方生成器的步骤,并展示了如何生成Java模型类、Mapper接口和XML文件。通过实践案例和常见问题解答,进一步帮助读者理解和使用MyBatis官方生成器。
Mybatis的基本概念MyBatis简介
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(普通老式Java对象)映射成数据库中的记录。MyBatis提供了强大的映射语句和存放结果映射及增删改查等操作的支持,简化了数据访问层的开发工作。
MyBatis的工作原理
MyBatis的工作流程主要包括以下几个步骤:
- 读取配置文件:MyBatis读取配置文件(如
mybatis-config.xml
)来配置数据库连接信息和映射文件路径。 - 构建SqlSessionFactory:使用
SqlSessionFactoryBuilder
类创建SqlSessionFactory
。SqlSessionFactory
是一个工厂类,用于创建SqlSession
。 - 创建SqlSession:通过
SqlSessionFactory
创建SqlSession
,SqlSession
提供了执行SQL语句的接口。 - 执行SQL语句:通过
SqlSession
执行SQL语句,进行数据库的增删改查操作。 - 处理结果:MyBatis自动将查询结果映射到Java对象,提供了一种简单的方式来处理复杂的数据库操作。
官方生成器的作用
MyBatis Generator是MyBatis的一个官方工具,用于生成数据库的映射文件和Java模型类。它能够简化项目中数据访问层的开发工作,减少手动编写SQL映射文件和Java模型类的时间和错误。
官方生成器的使用场景
MyBatis Generator主要适用于以下场景:
- 代码自动生成:当表结构复杂,需要频繁更新时,使用MyBatis Generator可以自动生成映射文件和模型类。
- 简化开发流程:对于新项目,MyBatis Generator可以快速生成基本的数据访问层代码。
- 降低手动编码错误:使用MyBatis Generator生成代码可以减少手动编写SQL和Java代码的错误。
准备开发环境
- 安装JDK:确保已安装Java开发工具包(JDK),并配置好环境变量。
- IDE配置:使用IntelliJ IDEA或Eclipse等IDE进行开发。
- 数据库配置:安装MySQL等数据库,并创建相应的数据库和表。
下载和配置生成器
-
下载MyBatis Generator:从MyBatis Generator的GitHub仓库下载最新版本的jar包。具体下载地址和版本信息可以在MyBatis Generator的官方文档中找到。
- 配置生成器:在项目的
resources
目录下创建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="DB2Tables" targetRuntime="MyBatis3"> <!-- 数据库驱动类 --> <classPathEntry value="mysql-connector-java-8.0.22.jar"/> <!-- 数据库连接信息 --> <jdbcConnection driverType="MySQL"> <property name="connectionURL" value="jdbc:mysql://localhost:3306/test"/> <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/> <property name="password" value="password"/> <property name="userId" value="root"/> </jdbcConnection> <!-- 实体类生成配置 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <!-- Mapper接口生成配置 --> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <!-- Java Mapper接口生成配置 --> <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <!-- 表映射 --> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>
使用MyBatis官方生成器生成代码
配置生成器XML文件
generatorConfig.xml
文件用于配置MyBatis Generator的各个生成器插件和数据库连接信息。每个<context>
标签内可以配置多个<table>
标签,每个标签代表一个数据库表的生成配置。
以下是一个配置文件示例:
<?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="DB2Tables" targetRuntime="MyBatis3"> <classPathEntry value="mysql-connector-java-8.0.22.jar"/> <jdbcConnection driverType="MySQL"> <property name="connectionURL" value="jdbc:mysql://localhost:3306/test"/> <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/> <property name="password" value="password"/> <property name="userId" value="root"/> </jdbcConnection> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>
生成Java模型类
MyBatis Generator根据数据库表结构生成Java模型类。以下是一个生成的模型类示例:
package com.example.model; import java.util.Date; public class User { private Integer id; private String name; private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
生成Mapper接口和XML文件
MyBatis Generator生成Mapper接口和对应的XML文件。以下是一个生成的Mapper接口示例:
package com.example.mapper; import com.example.model.User; import java.util.List; public interface UserMapper { int deleteByPrimaryKey(Integer id); int insert(User record); int insertSelective(User record); User selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); }
以下是一个生成的XML文件示例:
<?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.model.User"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="email" jdbcType="VARCHAR" property="email" /> </resultMap> <sql id="Base_Column_List"> id, name, email </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer"> select <if test="select != null"> ${select} </if> <if test="select == null"> * </if> from user <where> <if test="id != null"> and id = #{id, jdbcType=INTEGER} </if> </where> </select> <insert id="insert" parameterType="com.example.model.User"> insert into user (id, name, email) values (#{id, jdbcType=INTEGER}, #{name, jdbcType=VARCHAR}, #{email, jdbcType=VARCHAR}) </insert> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from user where id = #{id, jdbcType=INTEGER} </delete> <update id="updateByPrimaryKeySelective" parameterType="com.example.model.User"> update user <set> <if test="name != null"> name = #{name, jdbcType=VARCHAR}, </if> <if test="email != null"> email = #{email, jdbcType=VARCHAR}, </if> </set> where id = #{id, jdbcType=INTEGER} </update> </mapper>生成器的高级配置
自定义生成的代码模板
MyBatis Generator允许自定义生成的代码模板。你可以在generatorConfig.xml
文件中配置模板文件路径。以下是一个配置示例:
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java" fileEncoding="UTF-8"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> <property name="modelType" value="flat"/> <property name="templateLocation" value="src/main/resources/templates"/> </javaModelGenerator>
将模板文件放置在src/main/resources/templates
位置,并指定modelType
属性为flat
。
配置DAO层的生成规则
MyBatis Generator允许自定义生成的DAO层规则。你可以在generatorConfig.xml
文件中配置生成的DAO层规则。以下是一个配置示例:
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="additionalProperties" value="beginningOfLineWithColon=true"/> </javaClientGenerator>实践案例及常见问题解答
生成器的典型应用场景
-
新项目初始化:
- 在新项目启动时,使用MyBatis Generator生成数据访问层的基本代码模板。例如,生成用户表的映射文件和模型类:
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
- 数据库表结构调整:
- 当数据库表结构发生变化时,可以使用MyBatis Generator重新生成更新后的映射文件和模型类。
- 代码维护:
- 在项目维护阶段,可以通过MyBatis Generator生成新的代码模板,减少手动编写代码的工作量。
常见问题及解决方法
- 生成器配置文件错误:
- 确保
generatorConfig.xml
文件配置正确,包括数据库连接信息、表名等。
- 确保
- 生成代码不正确:
- 检查数据库表结构是否与配置文件中的表名一致。
-
生成代码不更新:
- 解决方法:清除生成代码缓存,重新运行生成器。例如:
mvn mybatis-generator:generate
- 生成代码出现编译错误:
- 解决方法:检查生成的代码文件路径是否正确,IDE编译设置是否正确,确保生成的文件与项目结构一致。
这篇关于Mybatis官方生成器学习入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南