Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。
1、相关文件
关于Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases
由于我使用的是Mysql数据库,这里需要在准备一个连接mysql数据库的驱动jar包
以下是相关文件截图:
和Hibernate逆向生成一样,这里也需要一个配置文件:
generatorConfig.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 <generatorConfiguration> 6 <!--数据库驱动--> 7 <classPathEntry location="mysql-connector-java-5.0.8-bin.jar"/> 8 <context id="DB2Tables" targetRuntime="MyBatis3"> 9 <commentGenerator> 10 <property name="suppressDate" value="true"/> 11 <property name="suppressAllComments" value="true"/> 12 </commentGenerator> 13 <!--数据库链接地址账号密码--> 14 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/mymessages" userId="root" password="root"> 15 </jdbcConnection> 16 <javaTypeResolver> 17 <property name="forceBigDecimals" value="false"/> 18 </javaTypeResolver> 19 <!--生成Model类存放位置--> 20 <javaModelGenerator targetPackage="lcw.model" targetProject="src"> 21 <property name="enableSubPackages" value="true"/> 22 <property name="trimStrings" value="true"/> 23 </javaModelGenerator> 24 <!--生成映射文件存放位置--> 25 <sqlMapGenerator targetPackage="lcw.mapping" targetProject="src"> 26 <property name="enableSubPackages" value="true"/> 27 </sqlMapGenerator> 28 <!--生成Dao类存放位置--> 29 <javaClientGenerator type="XMLMAPPER" targetPackage="lcw.dao" targetProject="src"> 30 <property name="enableSubPackages" value="true"/> 31 </javaClientGenerator> 32 <!--生成对应表及类名--> 33 <table tableName="message" domainObjectName="Messgae" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> 34 </context> 35 </generatorConfiguration>
需要修改文件配置的地方我都已经把注释标注出来了,这里的相关路径(如数据库驱动包,生成对应的相关文件位置可以自定义)不能带有中文。
上面配置文件中的:
<table tableName="message" domainObjectName="Messgae" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
tableName和domainObjectName为必选项,分别代表数据库表名和生成的实力类名,其余的可以自定义去选择(一般情况下均为false)。
生成语句文件:
java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
2、使用方法
在该目录按住Shift键,右键鼠标选择"在此处打开命令窗口",复制粘贴生成语句的文件代码即可。
看下效果图:
生成相关代码:
Message.java
1 package lcw.model; 2 3 public class Messgae { 4 private Integer id; 5 6 private String title; 7 8 private String describe; 9 10 private String content; 11 12 public Integer getId() { 13 return id; 14 } 15 16 public void setId(Integer id) { 17 this.id = id; 18 } 19 20 public String getTitle() { 21 return title; 22 } 23 24 public void setTitle(String title) { 25 this.title = title == null ? null : title.trim(); 26 } 27 28 public String getDescribe() { 29 return describe; 30 } 31 32 public void setDescribe(String describe) { 33 this.describe = describe == null ? null : describe.trim(); 34 } 35 36 public String getContent() { 37 return content; 38 } 39 40 public void setContent(String content) { 41 this.content = content == null ? null : content.trim(); 42 } 43 }
MessgaeMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="lcw.dao.MessgaeMapper" > 4 <resultMap id="BaseResultMap" type="lcw.model.Messgae" > 5 <id column="id" property="id" jdbcType="INTEGER" /> 6 <result column="title" property="title" jdbcType="VARCHAR" /> 7 <result column="describe" property="describe" jdbcType="VARCHAR" /> 8 <result column="content" property="content" jdbcType="VARCHAR" /> 9 </resultMap> 10 <sql id="Base_Column_List" > 11 id, title, describe, content 12 </sql> 13 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 14 select 15 <include refid="Base_Column_List" /> 16 from message 17 where id = #{id,jdbcType=INTEGER} 18 </select> 19 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 20 delete from message 21 where id = #{id,jdbcType=INTEGER} 22 </delete> 23 <insert id="insert" parameterType="lcw.model.Messgae" > 24 insert into message (id, title, describe, 25 content) 26 values (#{id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{describe,jdbcType=VARCHAR}, 27 #{content,jdbcType=VARCHAR}) 28 </insert> 29 <insert id="insertSelective" parameterType="lcw.model.Messgae" > 30 insert into message 31 <trim prefix="(" suffix=")" suffixOverrides="," > 32 <if test="id != null" > 33 id, 34 </if> 35 <if test="title != null" > 36 title, 37 </if> 38 <if test="describe != null" > 39 describe, 40 </if> 41 <if test="content != null" > 42 content, 43 </if> 44 </trim> 45 <trim prefix="values (" suffix=")" suffixOverrides="," > 46 <if test="id != null" > 47 #{id,jdbcType=INTEGER}, 48 </if> 49 <if test="title != null" > 50 #{title,jdbcType=VARCHAR}, 51 </if> 52 <if test="describe != null" > 53 #{describe,jdbcType=VARCHAR}, 54 </if> 55 <if test="content != null" > 56 #{content,jdbcType=VARCHAR}, 57 </if> 58 </trim> 59 </insert> 60 <update id="updateByPrimaryKeySelective" parameterType="lcw.model.Messgae" > 61 update message 62 <set > 63 <if test="title != null" > 64 title = #{title,jdbcType=VARCHAR}, 65 </if> 66 <if test="describe != null" > 67 describe = #{describe,jdbcType=VARCHAR}, 68 </if> 69 <if test="content != null" > 70 content = #{content,jdbcType=VARCHAR}, 71 </if> 72 </set> 73 where id = #{id,jdbcType=INTEGER} 74 </update> 75 <update id="updateByPrimaryKey" parameterType="lcw.model.Messgae" > 76 update message 77 set title = #{title,jdbcType=VARCHAR}, 78 describe = #{describe,jdbcType=VARCHAR}, 79 content = #{content,jdbcType=VARCHAR} 80 where id = #{id,jdbcType=INTEGER} 81 </update> 82 </mapper>
MessgaeMapper.java
1 package lcw.dao; 2 3 import lcw.model.Messgae; 4 5 public interface MessgaeMapper { 6 int deleteByPrimaryKey(Integer id); 7 8 int insert(Messgae record); 9 10 int insertSelective(Messgae record); 11 12 Messgae selectByPrimaryKey(Integer id); 13 14 int updateByPrimaryKeySelective(Messgae record); 15 16 int updateByPrimaryKey(Messgae record); 17 }
相关推荐
Mybatis自动生成实体类,XML文件
Mybatis自动生成工具是一款高效实用的开发辅助软件,专为Java开发者设计,旨在简化数据库操作相关的代码编写工作。它支持MySQL和SQL Server两大主流数据库,能够自动根据数据库表结构生成对应的实体类(Entity)和...
MyBatis Generator(MBG)是一款强大的工具,用于自动生成MyBatis的Mapper接口、XML映射文件以及对应的实体类。这款工具极大地提高了开发效率,减少了手动编写这些基础代码的工作量,使得开发者能够更专注于业务逻辑...
而“mybatis自动生成工具”就是为了解决这个问题,帮助开发者自动生成与数据库表对应的Java实体类(DO)、Mapper接口及实现类、Controller等核心组件。 1. MyBatis自动生成器: MyBatis Generator(MBG)是官方...
"Mybatis自动生成工具-脚本生成"是Mybatis的一个辅助工具,旨在帮助开发者自动化生成与数据库操作相关的代码,提高开发效率。 在Java开发中,手动编写SQL语句和对应的Mapper接口、XML配置文件是一项繁琐的工作。...
mybatis自动生成全部文件mybatis-generator.xml mybatis-generator-core-1.3.1.jar mysql-connector-java-5.0.8-bin.jar
这个“mybatis自动生成工具类”正是为了解决这个问题,它简化了手动编写这些重复性工作,只需要更改数据库表名,即可快速生成对应的数据访问层代码。 首先,我们要理解 MyBatis 代码生成器的工作原理。它主要通过...
这个"mybatis自动生成器依赖jar包"就是实现这一功能的关键。 首先,我们需要理解MyBatis代码生成器的基本原理。它通过读取数据库中的表结构,然后根据预设的模板生成对应的JavaBean类,这些类通常包含了字段(与...
"mybatis自动生成代码"这一主题通常指的是MyBatis的代码生成器,它可以帮助开发者自动化地创建数据访问对象(DAO)、实体类、Mapper接口和XML配置文件,从而提高开发效率,减少手动编码的工作量。 MyBatis 的代码...
在标题和描述中提到的“mybatis自动生成代码和配置文件”是一个常见的开发需求,主要是为了提高开发效率和减少错误。这个过程通常涉及到MyBatis的逆向工程(Reverse Engineering)工具或者使用一些第三方插件,如...
这个压缩包文件“MyBatis自动生成配置文件全解.zip”显然包含了关于如何配置和使用MyBatis自动代码生成器的详细指南。 首先,MyBatis的自动代码生成器(MyBatis Generator,简称MBG)是一个强大的工具,它可以自动...
总结来说,MyBatis自动生成DAO和Entity是一种高效且实用的开发方式,通过"mybatis_generate"这样的工具,可以大大简化代码编写过程,提高开发效率,让开发者更专注于业务逻辑的实现,而不是重复的基础代码编写。...
在"mybatis自动生成语句XML版本"这个项目中,我们主要关注的是如何配置和使用MBG生成针对Oracle数据库的代码。 首先,我们需要创建一个配置文件`generator_oracle_apply.xml`。这个XML文件定义了MBG的所有配置参数...
Eclipse Mybatis自动生成代码工具是一款非常实用的开发辅助软件,尤其对于那些使用Mybatis作为持久层框架的Java开发者来说,它可以显著提升开发效率。Mybatis Generator(简称Generator)是这个工具的核心,它允许...
总的来说,Mybatis自动生成POJO、Mapper和XML工具是提高开发效率的重要工具,它帮助开发者快速搭建数据库操作的基础框架,让开发者能够更专注于业务逻辑的实现,而不是重复的底层代码编写。通过熟练掌握并使用这样的...
关于mybatis自动生成语句,还有一些jar,需要的联系我
MyBatis自动生成器,作为一个强大的工具,极大地简化了开发者在使用MyBatis时的数据访问层(DAO)编码工作。这个工具可以根据数据库表结构自动生成相应的Java代码,包括实体类、Mapper接口、Mapper XML文件以及对应...
在开发过程中,MyBatis自动生成代码工具可以极大地提高开发效率,减少手动编写重复的Mapper接口、Mapper XML配置文件以及POJO(Plain Old Java Object)类的工作量。这款工具可以根据数据库中的单表自动生成对应的...