在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
Maven 是一个优秀的项目构建和管理工具,mybatis-generator 插件用于快速生成 Mybatis xml 与实体 Bean。
分为三步,在pom.xml中做两处配置,第二步创建generatorConfig.xml,第三步运行执行命令生成代码
1 mybatis-generator 插件 Maven 配置
首先在你项目的 pom.xml 中配置插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<!-- 配置数据库链接及mybatis generator core依赖 生成mapper时使用 -->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
2 mybatis-generator 插件 配置文件创建
在第一步中 我们通过 configurationFile 标签配置了 mybatis-generator 使用的配置文件。
<configurationFile>...generatorConfig.xml</configurationFile>
所以第二步就是创建配置文件
<?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">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test_mybatis"
userId="zhaolong"
password="123456">
</jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver>
<!-- 是否使用BigDecimals,false可自动转化以下类型(Long Integer Short等) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.example.demo.m" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.m" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<property name="useActualColumnNames" value="false"/>
<!-- 数据库表主键 -->
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
</context>
</generatorConfiguration>
大家在使用时,直接复制我这个配置文件,然后修改里面的数据库连接以及要生成的表的 tableName就可以了。
3 第三步就是执行命令生成代码
生成的 User.java 文件内容如下
public class User {
private Long id;
private String idCard;
private String uName;
private String uPhone;
private Integer uAge;
private String uImage;
private Date createTime;
... get set 方法省略
}
生成的 UserMapper.java 文件内容如下
public interface UserMapper {
int deleteByPrimaryKey(Long id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
生成的 UserMapper.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.demo.m.UserMapper">
<resultMap id="BaseResultMap" type="com.example.demo.m.User">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="id_card" jdbcType="VARCHAR" property="idCard" />
<result column="u_name" jdbcType="VARCHAR" property="uName" />
<result column="u_phone" jdbcType="VARCHAR" property="uPhone" />
<result column="u_age" jdbcType="INTEGER" property="uAge" />
<result column="u_image" jdbcType="VARCHAR" property="uImage" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
id, id_card, u_name, u_phone, u_age, u_image, create_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_user
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from t_user
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.example.demo.m.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_user (id_card, u_name, u_phone,
u_age, u_image, create_time
)
values (#{idCard,jdbcType=VARCHAR}, #{uName,jdbcType=VARCHAR}, #{uPhone,jdbcType=VARCHAR},
#{uAge,jdbcType=INTEGER}, #{uImage,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}
)
</insert>
<insert id="insertSelective" parameterType="com.example.demo.m.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="idCard != null">
id_card,
</if>
<if test="uName != null">
u_name,
</if>
<if test="uPhone != null">
u_phone,
</if>
<if test="uAge != null">
u_age,
</if>
<if test="uImage != null">
u_image,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="idCard != null">
#{idCard,jdbcType=VARCHAR},
</if>
<if test="uName != null">
#{uName,jdbcType=VARCHAR},
</if>
<if test="uPhone != null">
#{uPhone,jdbcType=VARCHAR},
</if>
<if test="uAge != null">
#{uAge,jdbcType=INTEGER},
</if>
<if test="uImage != null">
#{uImage,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.example.demo.m.User">
update t_user
<set>
<if test="idCard != null">
id_card = #{idCard,jdbcType=VARCHAR},
</if>
<if test="uName != null">
u_name = #{uName,jdbcType=VARCHAR},
</if>
<if test="uPhone != null">
u_phone = #{uPhone,jdbcType=VARCHAR},
</if>
<if test="uAge != null">
u_age = #{uAge,jdbcType=INTEGER},
</if>
<if test="uImage != null">
u_image = #{uImage,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.example.demo.m.User">
update t_user
set id_card = #{idCard,jdbcType=VARCHAR},
u_name = #{uName,jdbcType=VARCHAR},
u_phone = #{uPhone,jdbcType=VARCHAR},
u_age = #{uAge,jdbcType=INTEGER},
u_image = #{uImage,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
完毕
不局限于思维,不局限语言限制,才是编程的最高境界。
以小编的性格,肯定是要录制一套视频的,随后会上传
有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人