mybatis generator(保姆级教学)
mybatis generator,xml逆向生成工具
·
mybatis generator:逆向生成工具:
说白了就是:
直接根据我们的数据库表
生成实体类,mapper类,xml文件
不需要我们自己写mapper类,和基于标签的mapper.xml这些简单又繁琐的工作
但是值得注意的是生成的方法中的细微区别!!
- 核心maven与plugin:
<!--mybatis.generator:项目逆向生成工具依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<!--引入MySQL的依赖关系-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--,注意:使用API下的实体类,我的微服务项目需要这样引入其它服务下的实体类,
如果是单体,完全可以不需要该项目坐标-->
<dependency>
<groupId>com.yyx.cloud</groupId>
<artifactId>API</artifactId>
<version>1.0.0</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis generator 自动生成代码插件 ,这里输入自己创建的mybatis-generator-config.xml地址-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
..\eureka_provider\src/main/resources/mybatis-generator-config.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
- mybatis-generator-config.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>
<!-- 这里取maven官方找一下,,地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.26
看见哪个853k的jar了没,就是这个 -->
<classPathEntry location="C:\environment\package/mysql-connector-java-5.1.26.jar"/>
<context id="context" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 数据库的相关配置 ,输入自己的数据库,端口,账户,密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/shopping"
userId="root" password="123456"/>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 实体类生成的位置 ,因为我这里是微服务实体类在不同的项目中所以给了完全路径
单体服务,完全可以仿照下面的mapper生成路径-->
<javaModelGenerator targetPackage="com.yyx.api"
targetProject="C:\Users\yangyixin\Desktop\学习经历\学习\mycloud\API\src\main\java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- *Mapper.xml 文件的位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- Mapper 接口文件的位置 -->
<javaClientGenerator targetPackage="com.yyx.cloud.user.mapper" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 关键:---相关表的配置:生成具体哪个表的实体类,xml,mapper
tableName:数据库中的表名称 domainObjectName:生成实体类的名称-->
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false"/>
</context>
</generatorConfiguration>
- 目录结构
说明一下:因为我构建的是微服务项目,所以会将生成的实体类放在其它的目录下
- 运行插件
得到如下的三个类:
usermapper(里面的诸如:insert,insertSelective有什么区别,可以实践测试一下)
usermapper.xml:爆红的话改成如图,加上www
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yyx.cloud.user.mapper.UserMapper" >
<resultMap id="BaseResultMap" type="com.yyx.api.User" >
<id column="user_id" property="userId" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="user_Sex" property="userSex" jdbcType="CHAR" />
<result column="user_age" property="userAge" jdbcType="TINYINT" />
<result column="user_bith" property="userBith" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
user_id, user_name, user_Sex, user_age, user_bith
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from user
where user_id = #{userId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from user
where user_id = #{userId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.yyx.api.User" >
insert into user (user_id, user_name, user_Sex,
user_age, user_bith)
values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{userSex,jdbcType=CHAR},
#{userAge,jdbcType=TINYINT}, #{userBith,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.yyx.api.User" >
insert into user
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="userId != null" >
user_id,
</if>
<if test="userName != null" >
user_name,
</if>
<if test="userSex != null" >
user_Sex,
</if>
<if test="userAge != null" >
user_age,
</if>
<if test="userBith != null" >
user_bith,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="userId != null" >
#{userId,jdbcType=INTEGER},
</if>
<if test="userName != null" >
#{userName,jdbcType=VARCHAR},
</if>
<if test="userSex != null" >
#{userSex,jdbcType=CHAR},
</if>
<if test="userAge != null" >
#{userAge,jdbcType=TINYINT},
</if>
<if test="userBith != null" >
#{userBith,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.yyx.api.User" >
update user
<set >
<if test="userName != null" >
user_name = #{userName,jdbcType=VARCHAR},
</if>
<if test="userSex != null" >
user_Sex = #{userSex,jdbcType=CHAR},
</if>
<if test="userAge != null" >
user_age = #{userAge,jdbcType=TINYINT},
</if>
<if test="userBith != null" >
user_bith = #{userBith,jdbcType=TIMESTAMP},
</if>
</set>
where user_id = #{userId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.yyx.api.User" >
update user
set user_name = #{userName,jdbcType=VARCHAR},
user_Sex = #{userSex,jdbcType=CHAR},
user_age = #{userAge,jdbcType=TINYINT},
user_bith = #{userBith,jdbcType=TIMESTAMP}
where user_id = #{userId,jdbcType=INTEGER}
</update>
</mapper>
就可以操作数据库了!或者进行web项目了!
更多推荐
已为社区贡献3条内容
所有评论(0)