使用TkMybatis逆向生成带中文注释文件,并使用其常用的方法

首先说明,博主用的是springboot,如使用原生态的mybatis的一些配置文件请自行百度

贴上pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hw</groupId>
    <artifactId>springboot-mybatis-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis-test</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!--web模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--逆向工程-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>

        <!--tkmybatis-->
        <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <dependencies>
                    <dependency>
                        <groupId> mysql</groupId>
                        <artifactId> mysql-connector-java</artifactId>
                        <version>5.1.39</version>
                    </dependency>



                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.5</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.5.2</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--允许移动生成的文件 -->
                    <verbose>true</verbose>
                    <!-- 是否覆盖 -->
                    <overwrite>true</overwrite>
                    <!-- 自动生成的配置 -->
                    <configurationFile>
                        src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

然后贴上application.properties配置文件

#配置编码格式
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

#配置数据库相关信息
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#开启驼峰命名
mybatis.configuration.mapUnderscoreToCamelCase=true 

逆向工程配置文件

<?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>
    <!--数据库驱动jar    由于pom文件中导入了驱动,所以这里可以不用 -->
    <!--<classPathEntry-->
    <!--location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.45" />-->

    <context id="Tables" targetRuntime="MyBatis3">
        <!--去除注释 -->
        <!--<commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>-->

        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
            <property name="caseSensitive" value="true"/>
        </plugin>

        <!--数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis" userId="root"
            password="root">
        </jdbcConnection>
        <!--默认false Java type resolver will always use java.math.BigDecimal if
            the database column is of type DECIMAL or NUMERIC. -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--生成实体类 指定包名 以及生成的地址 (可以自定义地址,但是路径不存在不会自动创建 使用Maven生成在target目录下,会自动创建) -->
        <javaModelGenerator targetPackage="com.hw.tk.mybatis.user"
            targetProject="E:\Project\Maven\springboot-mybatis-test\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!--生成SQLMAP文件 -->
        <sqlMapGenerator targetPackage="com.hw.tk.mapper.user"
            targetProject="E:\Project\Maven\springboot-mybatis-test\src\main\java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!--生成Dao文件 可以配置 type="XMLMAPPER"生成xml的dao实现 context id="DB2Tables" 修改targetRuntime="MyBatis3" -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.hw.tk.mapper.user"
            targetProject="E:\Project\Maven\springboot-mybatis-test\src\main\java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!--对应数据库表 mysql可以加入主键自增 字段命名 忽略某字段等 -->
        <table tableName="student" domainObjectName="student" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

    </context>
</generatorConfiguration>

然后我们使用maven插件生成实体类和mapper接口,双击下图位置即可

 

之后就能看见我们生成的文件了,贴上代码:

//实体类
package com.hw.tk.mybatis.user;

import javax.persistence.*;

public class student {
    /**
     * 编号
     */
    @Id
    private Integer sid;

    /**
     * 名字
     */
    @Column(name = "s_name")
    private String sName;

    /**
     * 教师id
     */
    private Integer tid;


    @Override
    public String toString() {
        return "student{" +
                "sid=" + sid +
                ", sName='" + sName + '\'' +
                ", tid=" + tid +
                '}';
    }

    public student(Integer sid, String sName, Integer tid) {
        this.sid = sid;
        this.sName = sName;
        this.tid = tid;
    }

    public student(Integer sid) {
        this.sid = sid;
    }

    public student(String sName) {
        this.sName = sName;
    }

    public student(String sName, Integer tid) {
        this.sName = sName;
        this.tid = tid;
    }

    public student() {
        super();
    }

    /**
     * 获取编号
     *
     * @return sid - 编号
     */
    public Integer getSid() {
        return sid;
    }

    /**
     * 设置编号
     *
     * @param sid 编号
     */
    public void setSid(Integer sid) {
        this.sid = sid;
    }

    /**
     * 获取名字
     *
     * @return s_name - 名字
     */
    public String getsName() {
        return sName;
    }

    /**
     * 设置名字
     *
     * @param sName 名字
     */
    public void setsName(String sName) {
        this.sName = sName == null ? null : sName.trim();
    }

    /**
     * 获取教师id
     *
     * @return tid - 教师id
     */
    public Integer getTid() {
        return tid;
    }

    /**
     * 设置教师id
     *
     * @param tid 教师id
     */
    public void setTid(Integer tid) {
        this.tid = tid;
    }
}

package com.hw.tk.mapper.user;

import com.hw.tk.mybatis.user.student;
import tk.mybatis.mapper.common.Mapper;
//可以在这里定义你自己的业务逻辑方法,当然,实现的mapper这个接口它本身自带很多通用的方法
public interface studentMapper extends Mapper<student> {
}

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.hw.tk.mapper.user.studentMapper">
  <resultMap id="BaseResultMap" type="com.hw.tk.mybatis.user.student">
    <!--
      WARNING - @mbg.generated
    -->
    <id column="sid" jdbcType="INTEGER" property="sid" />
    <result column="s_name" jdbcType="VARCHAR" property="sName" />
    <result column="tid" jdbcType="INTEGER" property="tid" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--
      WARNING - @mbg.generated
    -->
    sid, s_name, tid
  </sql>
</mapper>

到此生成文件就结束了,这里可以看到生成的实体类属性都带着中文注释,而这个注释就是数据库中字段的注释

整个项目结构图:

完事之后来试试tkmapper给我们自带的一些通用方法,在测试之前我们需要在springboot的启动类中声明一个注解:

package com.hw;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import tk.mybatis.spring.annotation.MapperScan; //注意是tkmybatis的注解不是spring的

@MapperScan("com.hw.tk.mapper.*")   //扫描该包下的注解
@SpringBootApplication
public class SpringbootMybatisTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisTestApplication.class, args);
    }

}

用上我们的测试,其中常用的方法我也贴在代码中的注释用

package com.hw;

import com.hw.tk.mapper.user.studentMapper;
import com.hw.tk.mybatis.user.student;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


import java.util.List;

import tk.mybatis.mapper.entity.Example;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisTestApplicationTests {
    @Autowired  //自动注入,由于是测试所以没有service层,直接使用mapper
    studentMapper studentMapper;
    /**
     * 通用Mapper常用方法:
     *
     * 等号的CRUD:
     * List<T> select(T record); 根据实体中的属性值进行查询,查询条件使用等号
     * T selectByPrimaryKey(Object key); 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
     * List<T> selectAll(); 查询全部结果,select(null)方法能达到同样的效果
     * T selectOne(T record); 根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号
     * int selectCount(T record); 根据实体中的属性查询总数,查询条件使用等号
     * int insert(T record); 保存一个实体,null的属性也会保存,不会使用数据库默认值
     * int insertSelective(T record); 保存一个实体,null的属性不会保存,会使用数据库默认值
     * int updateByPrimaryKey(T record); 根据主键更新实体全部字段,null值会被更新
     * int updateByPrimaryKeySelective(T record); 根据主键更新属性不为null的值
     * int delete(T record); 根据实体属性作为条件进行删除,查询条件使用等号
     * int deleteByPrimaryKey(Object key); 根据主键字段进行删除,方法参数必须包含完整的主键属性
     * 条件的CRUD:
     * List<T> selectByCondition(Object condition); 根据Condition条件进行查询
     * int selectCountByCondition(Object condition); 根据Condition条件进行查询总数
     * int updateByCondition(@Param("record") T record, @Param("example") Object condition); 根据Condition条件更新实体record包含的全部属性,null值会被更新
     * int updateByConditionSelective(@Param("record") T record, @Param("example") Object condition); 根据Condition条件更新实体record包含的不是null的属性值
     * int deleteByCondition(Object condition); 根据Condition条件删除数据
     */
    @Test
    public void contextLoads() throws Exception {
        //Example是用来过滤的一个类,关于这个类的更多用法:https://gitee.com/free/Mapper/wikis/5.extend?sort_id=208211
        Example example = new Example(student.class);//实例化
        Example.Criteria criteria = example.createCriteria();
        //like查询
        criteria.orLike("sName", "%s%");
        criteria.orLike("sName", "%0%");
        List<student> students = studentMapper.selectByExample(example);
        students.forEach(x-> System.err.println(x));
    }

}

结果:

更多过滤的方式:可以直接看源码或者官方文档

https://gitee.com/free/Mapper/wikis/5.extend?sort_id=208211

查看下图根据方法名就能知道该方法是做什么用的

 

点赞或者评论是我最大的动力,有问题欢迎留言或者联系q:1559810637  

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值