mybatis generator:逆向生成工具:

说白了就是:
直接根据我们的数据库表
生成实体类,mapper类,xml文件
不需要我们自己写mapper类,和基于标签的mapper.xml这些简单又繁琐的工作
但是值得注意的是生成的方法中的细微区别!!

  1. 核心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>
  1. 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>

  1. 目录结构
    说明一下:因为我构建的是微服务项目,所以会将生成的实体类放在其它的目录下
    在这里插入图片描述
  2. 运行插件
    在这里插入图片描述

在这里插入图片描述
得到如下的三个类:
在这里插入图片描述
在这里插入图片描述
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项目了!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐