GVKun编程网logo

Mybatis choose when用法实例代码(mybatis的choose when)

9

如果您想了解Mybatischoosewhen用法实例代码和mybatis的choosewhen的知识,那么本篇文章将是您的不二之选。我们将深入剖析Mybatischoosewhen用法实例代码的各个

如果您想了解Mybatis choose when用法实例代码mybatis的choose when的知识,那么本篇文章将是您的不二之选。我们将深入剖析Mybatis choose when用法实例代码的各个方面,并为您解答mybatis的choose when的疑在这篇文章中,我们将为您介绍Mybatis choose when用法实例代码的相关知识,同时也会详细的解释mybatis的choose when的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

Mybatis choose when用法实例代码(mybatis的choose when)

Mybatis choose when用法实例代码(mybatis的choose when)

本文通过实例代码给大家介绍了Mybatis choose when用法,需要的的朋友参考下吧

mybatis choose when的用法实现代码如下所示:

mapper.xml:

select a.city_id as CITYID, a.level1_maintain_unit_id as CITYID, a.county_id as CITYID, sum(ONUNUM) as ONUNUM, sum(ONTNUM) as ONTNUM from new_olt_upopt_sp_month_${tableDate} a where 1 = 1 and a.city_id = '0001' = ${startDate}]]> group by a.city_id a.level1_maintain_unit_id a.county_id having a.county_id in (select city_id from tab_city where city_id= #{cityId} or parent_id=#{cityId})

以上所述是小编给大家介绍的Mybatis choose when用法实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小编网站的支持!

java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】

java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】

一、概述

三款框架的功能对比

 

Mybatis-generator

通用Mapper

Mybatis-Plus

代码生成器

支持自动生成Model,Mapper,Mapper XML文件

生成方式不够灵活;

生成代码功能较为简单

支持自动生成Entity,Mapper,Mapper XML文件;

提供通用的Mapper模板,生成方式较灵活;

生成的Model文件包含注释能够很好地与数据库表完成映射

支持自动生成Entity,Mapper,Mapper XML,Service,Controller文件;

提供BaseMapper接口

CRUD操作

代码生成后每个Mapper有固定的CRUD方法;

在每个Mapper上分别扩展

提供通用Mapper接口;方便构造统一service

可以扩展通用接口

提供BaseMapper接口;

可以扩展通用接口

条件构造器

每个实体类自己的Example构造条件【对象方式】

提供通用Example【构建sql】

提供Wrapper进行复杂条件构造

乐观锁

 

支持

支持

主键策略

 

支持

支持

分页

 

 

支持

逻辑删除

 

 

支持

通用枚举

 

 

支持

攻击Sql阻断

 

 

支持

性能分析

 

 

支持

  通用Mapper是对Mybatis-generator的升级改造,解决了使用Mybatis-generator可能需要大量重构的问题,并且在这个基础上加入了一些新的功能。

  Mybatis-Plus可以看作是在另一个方向上对Mybatis的升级改造,不仅能够根据数据库表快速生成pojo实体类,还封装了大量CRUD方法,使用Wrapper解决了复杂条件构造等问题,更是根据开发中常见的问题给出了一系列解决方案。

  在拥有Maven和Spring boot的开发框架下,MBG、通用Mapper和MP都可以快速地完成安装,相比于MBG和通用Mapper仅需要执行插件就可以完成基本的开发工作,MP可能需要更多的开发工作量。

  最佳实践参看代码:https://github.com/bjlhx15/java_base_architecture.git

二、Mybatis-generator

  MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将根据数据库表生成可用于访问表的文件。

  Mybatis-generator主要完成的工作是依据数据库表创建对应的model、dao、mapping文件,可以通过Maven插件或者mybatis-generator的jar包生成。

  这里介绍Maven插件使用方法:

    1、在pom.xml文件中加入mybatis-generator系列插件;

    2、创建generatorConfig.xml文件,在配置文件中指定数据库连接地址、生成类的存放地址、生成对应表的类名等信息;

    3、执行mybatis-generator插件,即可生成相应文件;

    4、此外,mybatis-generator自动生成了example类用于构造复杂的筛选条件

  Mybatis-generator使用较为简单,生成的DAO类及映射文件中包含基本的CRUD操作。

  需要注意的是,在一次项目中多次执行mybatis-generator,xml文件会追加,会覆盖原本的Model、DAO;可以使用如下方式

    

    1、每次清理要生成的xml

    2、自动生成的写入auto,

    3、个人扩展的使用上图方式

  可以参看上述github代码

三、通用Mapper【tk.mybatis】

官网:https://github.com/abel533/Mapper/wiki

  当数据库字段变化频繁时,使用MBG(mybatis-generator)会带来大量的重构工作,对此,通用Mapper给出的解决办法是:给予开发者一个具备丰富的单表方法并且容易扩展的通用的Mapper。

  通用Mapper是对单表的CRUD操作进行了较为详细的实现,使得开发人员可以随意的按照自己的需求选择通用的方法,同时允许开发人员便捷地对通用Mapper进行扩展。

1. 在pom.xml中添加插件配置

<!-- 命令:mvn mybatis-generator:generate -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <!-- 配置实际调用地址-->
                    <configurationFile>src/main/resources/mybatis_generatorConfig/generatorConfig-base.xml
                    </configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.38</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.0.0</version>
                    </dependency>
                </dependencies>
            </plugin>
View Code

  可以看到,通用Mapper的代码生成实际上是使用了MGB,因此通用Mapper的代码生成器只是调用了MGB,然后在这个基础上加入了一些元素来方便开发。

2. 配置文件generatorConfig.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>
    <!--导入属性配置,前面我们写的一个配置文件,你也可以直接使用mybatis的jdbc的配置文件 -->
    <properties resource="jdbc.properties"></properties>
    <!-- 数据库驱动,注意,这里必须要修改成你的数据库的驱动地址 -->
    <!--    如果 pom配置这里可以不写-->
    <!--    <classPathEntry  location=".m2/repository/mysql/mysql-connector-java/5.1.8/mysql-connector-java-5.1.8.jar"/>-->

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
        </plugin>

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}" password="${jdbc.password}">
        </jdbcConnection>

<!--        <javaTypeResolver>-->
<!--            <property name="forceBigDecimals" value="false"/>-->
<!--        </javaTypeResolver>-->
        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.github.bjlhx15.mybatis.springboot.base.model.auto"
                            targetProject="../tk-mybatis-springboot-base1/src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- targetProject:mapper xml 映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="autoxml"
                         targetProject="../tk-mybatis-springboot-base1/src/main/resources/mapper/">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!--targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.github.bjlhx15.mybatis.springboot.base.repository.auto"
                             targetProject="../tk-mybatis-springboot-base1/src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 指定数据库表 -->
        <table tableName="accountbalance" domainObjectName="AccountBalance">
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>


    </context>
</generatorConfiguration>
View Code

  与MGB原有的配置文件相比,这里只是多了一个插件的配置,这个插件的作用是:配置生成的Mapper接口都会自动继承这个接口,也就是说,使用通用Mapper生成的mapper接口即使看上去空空如也,但已经具备了大量的对数据库的操作方法。此外,通用 Mapper 专用代码生成器生成的 Model 会在原有基础上增加 @Table,@Id,@Column 等注解,方便自动与数据库字段进行映射。

3. 在 pom.xml 这一级目录的命令行窗口执行 mvn mybatis-generator:generate或者直接在执行mvn插件即可。

4. 通用Mapper同样有Example的设计,与MGB不同的是,MDB会对每一个表生成对应的Example类,而通用Mapper提供了一个统一的Example类,这个类和 MBG 生成的相比,需要自己设置属性名,这个类还额外提供了更多的方法。

  通用Mapper可以看作是MGB的改进和扩展,一定程度上解决了使用MGB重构的问题。

  可以参看上述github代码

四、Mybatis-Plus

  官网地址:https://mp.baomidou.com/guide/generator.html

  (以下简称MP)是Mybatis的增强工具(MBG和通用Mapper可看成插件),在Mybatis的基础上增加了很多功能,简化开发,提高效率。

在Spring Boot中的引入:

1. 在maven中添加MP启动器

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.1.2</version>
</dependency>

2. 要使用代码生成器还需要添加模板引擎依赖

参看地址:AutoGenerator的使用参考 https://mybatis.plus/guide/generator.html 。

添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。

Velocity(默认):

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.1</version>
</dependency>

Freemarker:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.29</version>
</dependency>

Beetl:

<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。

AutoGenerator generator = new AutoGenerator();

// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());

// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());

// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());

// other config
...
View Code

3、代码的自动生成。AutoGenerator是MP的代码生成器,通过调用AutoGenerator,进行相应的模板、策略配置可以快速生成Entity、Mapper、Mapper XML、Service、Controller各个模块的代码。

4. MP将通用的CRUD操作封装进BaseMapper接口,而自动生成的Mapper接口便自动继承了BaseMapper接口。复杂的Sql操作,则可以使用QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper)进行动态Sql拼接。

5、此外,MP还支持分页、逻辑删除、通用枚举、Sql注入等功能,在:https://mp.baomidou.com/guide/generator.html

  还有性能分析插件:https://mp.baomidou.com/guide/performance-analysis-plugin.html

与MBG不同,使用Mybatis-Plus自动生成代码需要编写代码,通过调用AutoAutoGenerator类实现代码生成,从这方面来说不如使用插件方便。但是它丰富的功能以及只是相对复杂的配置还是使它领先于MBG以及通用Mapper。

 

 

 

 

 

 

 

 

双方都

Java的MyBatis框架中MyBatis Generator代码生成器的用法

Java的MyBatis框架中MyBatis Generator代码生成器的用法

关于Mybatis Generator
MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时不需要创建对象和配置文件。 MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除)操作。 您仍然需要对联合查询和存储过程手写sql和对象。

MyBatis Generator 会生成:

匹配表结构的Java POJO,可能包括:

  • 一个和表主键匹配的类(如果存在主键[注:只有联合主键会有])
  • 一个包含了非主键字段的类(BLOB字段除外[注:单字段做主键时这里会包含])
  • 一个包含了BLOB字段的类 (如果表包含了BLOB字段)
  • 一个允许动态查询、更新和删除的类[注:指的是Example查询]

这些类之间会有适当的继承关系。 请注意可以配置生成器来生成不同类型的 POJO 的层次结构。 例如,如果您愿意您可能会选择针对每个表生成一个单独的实体对象。

MyBatis/iBATIS 兼容 sql 映射 XML 文件。MBG 在配置中为每个表简单的 CRUD 操作生成 sql。 生成的 sql 语句包括:

  • insert (插入)
  • update by primary key (根据主键更新记录)
  • update by example (根据条件更新记录)
  • delete by primary key (根据主键删除记录)
  • delete by example (根据条件删除记录)
  • select by primary key (根据主键查询记录)
  • select by example (根据条件查询记录集)
  • count by example (根据条件查询记录总数)

根据表的结构,生成的这些语句会有不同的变化(例如,如果表中没有主键,那么 MBG 将不会生成update by primary key方法)。

Java客户端类会适当的使用上面的对象,生成Java客户端类时可选的。 MBG会为MyBatis 3.x生成如下客户端类:
一个可以和MyBatis 3.x一起使用的mapper接口类
MBG会为iBATIS 2.x生成如下的客户端类:
符合 Spring 框架的DAO类。
只使用iBATIS sql映射API的DAO。 这种DAO可以通过下面两种方式生成:提供sqlMapClient通过构造方法或者setter注入。
符合iBATIS DAO 框架的DAO (iBATIS可选的一部分,这一框架已经过时,我们建议您使用Spring框架替代)。
MyBatis generator 可以在迭代开发环境中良好的运行, 在持续的构建环境中作为一个ant任务或maven插件。 运行MBG时要记住以下重要的事:

MBG 会自动合并已经存在并且和新生成的文件重名的 XML。MBG 不会覆盖您对已经生成xml所做的修改。 您可以反复的运行而不必担心失去您自定义的更改。 MBG 将取代所有以前运行中生成的 XML 元素。
MBG 不会 合并 Java 文件,他可以覆盖已经存在的文件或者保存新生成的文件为一个不同的唯一的名字。 您可以手动合并这些更改。 当您使用Eclipse 插件时,MBG 可以自动合并 Java 文件.

基本用法
MBG的运行主要依靠一份XML配置文件,首先我们可以重新新建一个项目名为MybatisGenerator,新建3个包分别名叫config,david.test,与david.mbg,config包主要存放真正的Mybatis里面需要用到的配置文件,可以把前几章中项目中的mybatis_demo_config.xml拷贝过来放在这个目录下,等等用作测试程序之用,david.test顾名思义就是存放以下常用的方法和测试程序大家也可以吧前几章中用到MybatisUtils工具类拿过来,新建好相应的MainFunction以备测试之用。而最后的david.mbg中就是我们今天要配置的XML,MBG生成配置文件。

201646155451471.png (359×338)

 如图所示,我们在下面新建好一个名为mbg_configuration.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>
  <classpathEntry
    location="./lib/mysql-connector-java-5.1.26-bin.jar" />
  <context id="mybatisDemoForMysqL" targetRuntime="MyBatis3">
    <!-- 控制注释 -->
    <commentGenerator>
      <!-- 是否去除所有自动生成的注释文件 -->
      <property name="suppressAllComments" value="true" />
      <!-- 是否去除所有自动生成的文件的时间戳,默认为false -->
      <property name="suppressDate" value="true" />
    </commentGenerator>
    <!-- 控制数据库 -->
    <jdbcConnection driverhttps://www.jb51.cc/tag/MysqL/" target="_blank">MysqL.jdbc.Driver"
      connectionURL="jdbc:MysqL://127.0.0.1:3306/mybatis_db?characterEncoding=utf8"
      userId="root" password="david0110" />

    <javaTypeResolver>
      <!-- 把jdbc中的decimal与numberic类型转化为integer类型 -->
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    <!-- 数据库表对应的model -->
    <javaModelGenerator targetPackage="david.model"
      targetProject="src">
      <property name="enableSubPackages" value="true" />
      <property name="trimstrings" value="true" />
    </javaModelGenerator>
    <!-- 控制Model的xmlMapper文件 -->
    <sqlMapGenerator targetPackage="david.mappers"
      targetProject="src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    <!-- 控制mapper接口 -->
    <javaClientGenerator targetPackage="david.inter"
      type="XMLMAPPER" targetProject="src">
      <property name="enableSubPackages" value="true" />
      <property name="methodNameCalculator" value="extended" />
    </javaClientGenerator>
    <!-- schema你的数据库,tableName表明,domainObjectName对应你的javabean类名,是否生成相应的example -->
    <table schema="mybatis_db" tableName="visitor" domainObjectName="Visitor"
      enableCountByExample="false" enableupdateByExample="false"
      enableDeleteByExample="false" enableSelectByExample="false"
      selectByExampleQueryId="false">
      <generatedKey column="id" sqlStatement="MysqL" />
      <columnOverride column="name" property="visitor_name" />
      <ignoreColumn column="status" delimitedColumnName="false" />      
    </table>
  </context>
</generatorConfiguration>

 大家可以注意到其实主要是这几个节点

  <classpathEntry>=> 存放jdbc驱动包的位置,可以采用相对路径,也可以采用绝对路径,此处示例中采用了相对路径

  <context>=>对应一个数据库下所有表的配置,可以有多个context,一个配置MysqL,一个配置oracle。

  <context>节点下主要有:

    <commentGenerator> => 注释生成节点,此示例中下的2个子节点分表代表

      suppressAllComments => 是否去除所有自动生成的注释文件

      suppressDate => 是否去除所有自动生成的文件的时间戳,默认为false

    <jdbcConnection> => 数据库连接配置信息

    <javaTypeResolver> => 把jdbc中的decimal与numberic类型转化为java.math.BigDeciaml形式表示

    <javaModelGenerator> => 配置你的POJO实体类,targetPackage="david.model",对应你的报名,可以自己根据实际业务取名,targetProject="src",在Eclipse环境下,指代的是项目和源文件夹的路径一般是指src目录,你的包都会新建在这个目录下,如果不是Eclipse环境,此处的值应该是个实际存在的文件系统路径,如果指定的路径不存在会报错,因为MBG不会自己创建相应的文件夹

    <sqlMapGenerator> => 配置生成相应的实体Mapper.xml,对于Mapper3.X我们需要把type="XMLMAPPER"

    <javaClientGenerator> => 配置生成相应的接口类,对应与Mapper.xml中的一系列CRUD方法sql语句

    <table> => 配置相应的数据库,对应的表明与想要生成领域类名(也就是实体类名字),此示例中我关闭了所有不必要的Example生成信息

  上述所有的信息都可以去官网查阅相应文档,或者到我的文件中去下载,里面相应的配置说明与相关应用示例。下载文档

  配置完上面的信息,最后一步是什么呢,我们就是要运行这个脚本文件了,官方说明中有4种方式,第一通过命令行方式,第二,三都是通过Ant或者Maven之类的工具生成,最后一种就是通过Java代码生成,我们这里就采用通过Java大麦生成的方式。在DemoRun类中添加一个生成脚本的方法如下:

private static void generateMbgConfiguration() {
    /*
     * Mybatis自带Generator工具生成相应东西
     */
    List<String> warnings = new ArrayList<String>();
    boolean overwrite = true;
    File configFile = new File("./src/david/mbg/mbg_configuration.xml");
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = null;
    try {
      config = cp.parseConfiguration(configFile);
    } catch (IOException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    } catch (XMLParserException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    }
    DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    try {
      MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback,warnings);
      myBatisGenerator.generate(null);
    } catch (InvalidConfigurationException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    } catch (sqlException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    } catch (IOException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    } catch (InterruptedException e) {
      // Todo Auto-generated catch block
      e.printstacktrace();
    }

    System.out.println("生成Mybatis配置成功!");
  }

  运行后再Refresh下项目你会发现下面神奇的帮你生成了主要配置,下图红框部分:

201646155540605.png (364×381)

最后我们来使用下自动生成的成果吧,我们可以参照前六章的方式,在DemoRun中添加相应的CRUD测试方法如下:

/*
   * 查询访问者信息
   */
  public static void testGenerateAdd() {
    sqlSession session = MybatisUtils.getsqlSession();
    VisitorMapper vOperation = session.getMapper(VisitorMapper.class);
    Visitor visitor = new Visitor();
    visitor.setVisitor_name("hello2");
    visitor.setEmail("helloworld2@qq.com");
    visitor.setCreatetime(new Date());
    int count = vOperation.insert(visitor);
    session.commit();
    MybatisUtils.closeSession(session);
    MybatisUtils.showMessages(CRUD_Enum.Add,count);
  }

  /*
   * 查询访问者信息
   */
  public static void testGenerateQuery(int id) {
    sqlSession session = MybatisUtils.getsqlSession();
    VisitorMapper vOperation = session.getMapper(VisitorMapper.class);
    Visitor visitor = vOperation.selectByPrimaryKey(id);
    MybatisUtils.closeSession(session);
    MybatisUtils.showMessages(CRUD_Enum.Query,1);
    System.out.println(visitor);
  }

  public static void testGenerateDelete(int id) {
    sqlSession session = MybatisUtils.getsqlSession();
    VisitorMapper vOperation = session.getMapper(VisitorMapper.class);
    int count = vOperation.deleteByPrimaryKey(id);
    session.commit();
    MybatisUtils.closeSession(session);
    MybatisUtils.showMessages(CRUD_Enum.Delete,count);
  }

  public static void testGenerateUpdate(int id) {
    sqlSession session = MybatisUtils.getsqlSession();
    VisitorMapper vOperation = session.getMapper(VisitorMapper.class);
    Visitor visitor = vOperation.selectByPrimaryKey(id);
    System.out.println(visitor);
    String name = visitor.getVisitor_name();
    if (name.contains("update")) {
      visitor.setVisitor_name(name.substring(0,name.indexOf("update")));
    } else {
      visitor.setVisitor_name(name + "update");
    }
    int count = vOperation.updateByPrimaryKey(visitor);
    session.commit();
    MybatisUtils.closeSession(session);
    MybatisUtils.showMessages(CRUD_Enum.Update,count);
    System.out.println(visitor);
  }

运行下测试程序,结果就出来了

201646155627558.png (774×115)

有没有感觉使用这个帮你提高了不少效率,不必在为繁琐的配置而头痛了,至少不用做重复的无谓的步骤了,让这些都交给工具去做吧^0^,当然在实际的使用中我们可能需要在生成后修改相应的类信息与接口信息名字,当然这些工作量已经不是太多了。希望今天这些内容对需要配置的同学有所帮助。

Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper

Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper

<divid="content_views">

<h3 id="本文用的是mavenidea15"><a name="t0"></a> 本文用的是maven,idea15</h3> <p> Mabatis三剑客分别是:mybatis-generator、mybatis-<a href="https://www.baidu.com/s?wd=plugin&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">plugin</a>、mybatis-pagehelper</p> <h2 id="一mybatis-generator"><a name="t1"></a> <a name="t1"target="_blank"></a>一、mybatis-generator</h2> <p> 根据我们的数据库自动生成pojo、dao和xml文件&nbsp;<br> pojo里面放的是跟数据库字段一一对应的对象、dao层是接口,供service使用,xml是这个dao层接口的实现,sql语句都写在xml里</p> <h4 id="1引入mabatis-generator"> <a name="t2"target="_blank"></a>1.引入mabatis-generator</h4> <p> pom.xml里引入配置</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span>&lt;</span><span><span><span>plugin</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>org.apache.maven.plugins<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>maven-compiler-plugin<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span>&lt;</span><span><span><span>configuration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;</span><span><span><span>source</span></span></span><span>&gt;</span></span>1.7<span><span>&lt;/</span><span><span><span>source</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span>&lt;</span><span><span><span>target</span></span></span><span>&gt;</span></span>1.7<span><span>&lt;/</span><span><span><span>target</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>encoding</span></span></span><span>&gt;</span></span>UTF-8<span><span>&lt;/</span><span><span><span>encoding</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>compilerArguments</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>extdirs</span></span></span><span>&gt;</span></span>${project.basedir}/src/main/webapp/WEB-INF/lib/<span><span>&lt;/</span><span><span><span>extdirs</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;/</span><span><span><span>compilerArguments</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;/</span><span><span><span>configuration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div><span><span>&lt;/</span><span><span><span>plugin</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 引入generatorConfig.xml&nbsp;<br> generatorConfig.xml</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span><span>&lt;?</span>xml version=<span>"1.0"</span> encoding=<span>"UTF-8"</span><span>?&gt;</span></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div><span><span><span>&lt;!DOCTYPE generatorConfiguration</span></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span> PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"</span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div><span> "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"&gt;</span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> </div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span><span>&lt;</span><span><span><span>generatorConfiguration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;!--导入属性配置--&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>properties</span></span></span><span> </span><span><span><span>resource</span></span></span><span>=</span><span><span><span>"datasource.properties"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>properties</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> </div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;!--指定特定数据库的jdbc驱动jar包的位置--&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;</span><span><span><span>classPathEntry</span></span></span><span> </span><span><span><span>location</span></span></span><span>=</span><span><span><span>"${db.driverLocation}"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;</span><span><span><span>context</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"default"</span></span></span><span> </span><span><span><span>targetRuntime</span></span></span><span>=</span><span><span><span>"MyBatis3"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> </div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;!-- optional,旨在创建class时,对注释进行控制 --&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;</span><span><span><span>commentGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressDate"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressAllComments"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="19"></div></div><div><div> <span><span>&lt;/</span><span><span><span>commentGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="20"></div></div><div><div> </div></div></li><li><div><divdata-line-number="21"></div></div><div><div> <span><span>&lt;!--jdbc的数据库连接 --&gt;</span></span></div></div></li><li><div><divdata-line-number="22"></div></div><div><div> <span><span>&lt;</span><span><span><span>jdbcConnection</span></span></span></span></div></div></li><li><div><divdata-line-number="23"></div></div><div><div><span> </span><span><span><span>driverClass</span></span></span><span>=</span><span><span><span>"${db.driverClassName}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="24"></div></div><div><div> <span><span><span>connectionURL</span></span></span><span>=</span><span><span><span>"${db.url}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="25"></div></div><div><div> <span><span><span>userId</span></span></span><span>=</span><span><span><span>"${db.username}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="26"></div></div><div><div> <span><span><span>password</span></span></span><span>=</span><span><span><span>"${db.password}"</span></span></span><span>&gt;</span></div></div></li><li><div><divdata-line-number="27"></div></div><div><div> <span><span>&lt;/</span><span><span><span>jdbcConnection</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="28"></div></div><div><div> </div></div></li><li><div><divdata-line-number="29"></div></div><div><div> </div></div></li><li><div><divdata-line-number="30"></div></div><div><div> <span><span>&lt;!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--&gt;</span></span></div></div></li><li><div><divdata-line-number="31"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaTypeResolver</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="32"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"forceBigDecimals"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="33"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaTypeResolver</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="34"></div></div><div><div> </div></div></li><li><div><divdata-line-number="35"></div></div><div><div> </div></div></li><li><div><divdata-line-number="36"></div></div><div><div> <span><span><span>&lt;!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类</span></span></span></div></div></li><li><div><divdata-line-number="37"></div></div><div><div><span> targetPackage 指定生成的model生成所在的包名</span></div></div></li><li><div><divdata-line-number="38"></div></div><div><div><span> targetProject 指定在该项目下所在的路径</span></div></div></li><li><div><divdata-line-number="39"></div></div><div><div><span> --&gt;</span></div></div></li><li><div><divdata-line-number="40"></div></div><div><div> <span><span>&lt;!--&lt;javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="41"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaModelGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.pojo"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="42"></div></div><div><div> <span><span>&lt;!-- 是否允许子包,即targetPackage.schemaName.tableName --&gt;</span></span></div></div></li><li><div><divdata-line-number="43"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="44"></div></div><div><div> <span><span>&lt;!-- 是否对model添加 构造函数 --&gt;</span></span></div></div></li><li><div><divdata-line-number="45"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"constructorBased"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="46"></div></div><div><div> <span><span>&lt;!-- 是否对类CHAR类型的列的数据进行trim操作 --&gt;</span></span></div></div></li><li><div><divdata-line-number="47"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"trimStrings"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="48"></div></div><div><div> <span><span>&lt;!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --&gt;</span></span></div></div></li><li><div><divdata-line-number="49"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"immutable"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="50"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaModelGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="51"></div></div><div><div> </div></div></li><li><div><divdata-line-number="52"></div></div><div><div> <span><span>&lt;!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --&gt;</span></span></div></div></li><li><div><divdata-line-number="53"></div></div><div><div> <span><span>&lt;!--&lt;sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="54"></div></div><div><div> <span><span>&lt;</span><span><span><span>sqlMapGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"mappers"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/resources"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="55"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="56"></div></div><div><div> <span><span>&lt;/</span><span><span><span>sqlMapGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="57"></div></div><div><div> </div></div></li><li><div><divdata-line-number="58"></div></div><div><div> <span><span><span>&lt;!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码</span></span></span></div></div></li><li><div><divdata-line-number="59"></div></div><div><div><span> type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象</span></div></div></li><li><div><divdata-line-number="60"></div></div><div><div><span> type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象</span></div></div></li><li><div><divdata-line-number="61"></div></div><div><div><span> type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口</span></div></div></li><li><div><divdata-line-number="62"></div></div><div><div><span> --&gt;</span></div></div></li><li><div><divdata-line-number="63"></div></div><div><div> </div></div></li><li><div><divdata-line-number="64"></div></div><div><div> <span><span>&lt;!-- targetPackage:mapper接口dao生成的位置 --&gt;</span></span></div></div></li><li><div><divdata-line-number="65"></div></div><div><div> <span><span>&lt;!--&lt;javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="66"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaClientGenerator</span></span></span><span> </span><span><span><span>type</span></span></span><span>=</span><span><span><span>"XMLMAPPER"</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.dao"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="67"></div></div><div><div> <span><span>&lt;!-- enableSubPackages:是否让schema作为包的后缀 --&gt;</span></span></div></div></li><li><div><divdata-line-number="68"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="69"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaClientGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="70"></div></div><div><div> </div></div></li><li><div><divdata-line-number="71"></div></div><div><div> </div></div></li><li><div><divdata-line-number="72"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_shipping"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Shipping"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="73"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Cart"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="74"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"CartItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="75"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_category"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Category"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="76"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Order"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="77"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"OrderItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="78"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_pay_info"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"PayInfo"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="79"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_product"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Product"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="80"></div></div><div><div> <span><span>&lt;</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"detail"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="81"></div></div><div><div> <span><span>&lt;</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"sub_images"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="82"></div></div><div><div> <span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="83"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_user"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"User"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="84"></div></div><div><div> </div></div></li><li><div><divdata-line-number="85"></div></div><div><div> </div></div></li><li><div><divdata-line-number="86"></div></div><div><div> <span><span>&lt;!-- mybatis插件的搭建 --&gt;</span></span></div></div></li><li><div><divdata-line-number="87"></div></div><div><div> <span><span>&lt;/</span><span><span><span>context</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="88"></div></div><div><div><span><span>&lt;/</span><span><span><span>generatorConfiguration</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2新建datasourceproperties文件配置数据库连接信息这里配置本地数据库"> <a name="t3"target="_blank"></a>2.新建datasource.properties文件,配置数据库连接信息(这里配置本地数据库)</h4> <p> <img src="https://img-blog.csdn.net/20170501211807876?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div>db.driverLocation=<span><span>F</span></span><span><span>:</span>/IdeaProjects/mmall/src/main/tool/mysql-connector-java-</span><span><span>5.1</span></span>.<span><span>6</span></span>-bin.jar</div></div></li><li><div><divdata-line-number="2"></div></div><div><div>db.driverClassName=com.mysql.jdbc.<span>Driver</span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div>db.url=<span><span>jdbc:</span></span><span><span>mysql:</span></span>/<span><span>/localhost:3306/mmall</span></span>?useUnicode=<span><span>true</span></span>&amp;characterEncoding=<span>UTF</span>-<span><span>8</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>db.username=root</div></div></li><li><div><divdata-line-number="5"></div></div><div><div>db.password=<span><span>940724</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 配置完之后,就点击idea的左下角有个小按钮,把右侧的maven project按钮调出来(右侧已有的请忽略)&nbsp;<br><img src="https://img-blog.csdn.net/20170501212050752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 点击maven project,并选定插件加载(双击就行)&nbsp;<br><img src="https://img-blog.csdn.net/20170501212307103?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 下方的控制台,出现build success就是成功了,就会发现dao的包和pojo包会生成好了接口和数据对象实体类,以及生成一个mapper文件夹,里面存储着数据库里各个实体的xml文件</p> <p> 注意mapper里生成的文件夹,我在创建的时候把时间戳给加里了,如果要完美的用的话,需要把时间戳优化一下</p> <h4 id="把insert标签下的createtimejdbctypetimestamp和updatetimejdbctypetimestamp改成now"> <a name="t4"target="_blank"></a>把insert标签下的#{createTime,jdbcType=TIMESTAMP}和#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <h4 id="把update标签下的updatetimejdbctypetimestamp改成now"> <a name="t5"target="_blank"></a>把update标签下的#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <p> 这个now()方法是数据库自带的函数,表示现在的时间</p> <hr><h2 id="二mybatis-plugin"><a name="t2"></a> <a name="t6"target="_blank"></a>二、mybatis-plugin</h2> <p> 我用的是idea15,如果其他版本不好用的,可以换成idea 15&nbsp;<br> 这是一个能够追踪dao接口和mapper文件里xml的一个插件</p> <ul><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 编辑XML文件时自动补全</p> </li><li> <p> 根据Mapper接口, 使用快捷键生成xml文件及SQL标签</p> </li><li> <p> ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C)</p> </li><li> <p> 快捷键生成@Param注解</p> </li><li> <p> XML中编辑SQL时, 括号自动补全</p> </li><li> <p> XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数)</p> </li><li> <p> 自动检查Mapper XML文件中ID冲突</p> </li><li> <p> 自动检查Mapper XML文件中错误的属性值</p> </li><li> <p> 支持<a href="https://www.baidu.com/s?wd=Find&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">Find</a> Usage</p> </li><li> <p> 支持重构从命名</p> </li><li> <p> 支持别名</p> </li><li> <p> 自动生成ResultMap属性</p> </li><li> <p> 快捷键: Option + Enter(<a href="https://www.baidu.com/s?wd=Mac&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">Mac</a>) | Alt + Enter(Windows)(直接跳转到mapper中的sql语句的快捷键是:“Ctrl+ALT+B”)</p> </li></ul><h4 id="效果点击dao可以追踪到xml同理点击xml的sql右边小箭头可以追踪到dao方法"> <a name="t7"target="_blank"></a>效果:点击dao可以追踪到xml,,同理点击xml的sql右边小箭头,可以追踪到dao方法</h4> <p> <img src="https://img-blog.csdn.net/20170501230749182?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h4 id="1安装插件"> <a name="t8"target="_blank"></a>1、安装插件:</h4> <p> <img src="https://img-blog.csdn.net/20170501214736063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 然后重启下idea</p> <h4 id="2mybatis-plugin插件破解"> <a name="t9"target="_blank"></a>2.mybatis-plugin插件破解</h4> <p> 到这个网址去&nbsp;<br><a href="https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin" rel="nofollow"target="_blank">https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin</a>&nbsp;<br> 你看到了一个Git仓库,先clone下来,不会clone的down下来,记住路径&nbsp;<br> 接下来,你看到一堆版本,选择你安装的mybatis_plugin版本号,比如我的是IDEA15版本的,我安装版本就是v2.64,进入v2.64你会看到一个com文件夹,牢牢记住这个文件夹有大作用</p> <p> <img src="https://img-blog.csdn.net/20170501222135388?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEa" alt="这里写图片描述" title=""></p> <p> 点击如图所示的右上角的fork,登录自己的github,登录之后,会发现右边有个绿色的Dowload图标,点击那个就可以下载别人的项目了&nbsp;<br><img src="https://img-blog.csdn.net/20170501224229186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="1-windows破解"><a name="t3"></a> <a name="t10"target="_blank"></a>(1) windows破解</h3> <p> 首先你要找到mybatis_plus.jar的位置,位置一般在这里&nbsp;<br> C:\Users\youname(你自己的文档).IntelliJIdea\config\plugins\mybatis_plus\lib&nbsp;<br> 用winRAR打开&nbsp;<br><img src="https://img-blog.csdn.net/20170501225736536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 将下载好的破解,与plugin插件压缩包中的文件更换,拖入压缩包,更换就行&nbsp;<br><img src="https://img-blog.csdn.net/20170501225438518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="重启你的idea完毕破解搞定"><a name="t4"></a> <a name="t11"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <h3 id="2mac破解"><a name="t5"></a> <a name="t12"target="_blank"></a>(2)mac破解</h3> <p> 使用find命令在你的用户目录下查找mybatis_plus.jar这个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>find</span> <span>~ -name</span> <span>"mybatis_plus.jar"</span></code><divdata-title="复制"></div></pre><p> OK,拿到一个地址,然后进去</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>cd</span> /Users/XXXXX/Library/Application Support/IntelliJIdea15/mybatis_plus/lib</code><divdata-title="复制"></div></pre><p> 看到了2个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span>#创建一个文件夹</span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div>mkdir m</div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span>#进去 </span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>cd m</div></div></li><li><div><divdata-line-number="5"></div></div><div><div><span>#拷贝到m文件夹中 </span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span>cp</span> ../mybatis_plus<span>.jar</span> .</div></div></li><li><div><divdata-line-number="7"></div></div><div><div><span>#解压jar包</span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div>jar xf mybatis_plus<span>.jar</span> </div></div></li><li><div><divdata-line-number="9"></div></div><div><div><span>#复制com文件夹到这里 路径根据你情况而定,版本号也根据你情况而定</span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div><span>cp</span> -r ~/Workspace/github/mybatis_plus/idea/plugin/MybatisPlugin/v2<span>.7</span>\~v2<span>.83</span>/<span>com</span> .</div></div></li><li><div><divdata-line-number="11"></div></div><div><div><span>#重新打为jar包</span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div>jar cf mybatis_plus<span>.jar</span> *</div></div></li><li><div><divdata-line-number="13"></div></div><div><div><span>#复制到m的上层目录</span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div><span>cp</span> mybatis_plus<span>.jar</span> ../</div></div></li></ol></code><divdata-title="复制"></div></pre><h3 id="重启你的idea完毕破解搞定-1"><a name="t6"></a> <a name="t13"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <hr><h2 id="三mybatis-pagehelper"><a name="t7"></a> <a name="t14"target="_blank"></a>三、Mybatis-pageHelper</h2> <p> 是一个开源的分页插件(如下网址有插件的全介绍)&nbsp;<br><a href="https://github.com/pagehelper/Mybatis-PageHelper" rel="nofollow"target="_blank">https://github.com/pagehelper/Mybatis-PageHelper</a>&nbsp;<br> 它的原理,是通过spring的AOP来实现的,这个插件能在执行sql的时候,把相关的数据再执行一次</p> <h4 id="1pomxml里添加依赖"> <a name="t15"target="_blank"></a>1.pom.xml里添加依赖</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.pagehelper<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>pagehelper<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>4.1.0<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> </div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.miemiedev<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>mybatis-paginator<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>1.2.17<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.jsqlparser<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>jsqlparser<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>0.9.4<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2在spring配置文件里添加配置"> <a name="t16"target="_blank"></a>2.在spring配置文件里添加配置</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div> <span><span>&lt;</span><span><span><span>bean</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"sqlSessionFactory"</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"org.mybatis.spring.SqlSessionFactoryBean"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span> </span><span><span><span>ref</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"mapperLocations"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"classpath*:mappers/*Mapper.xml"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> </div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;!-- 分页插件 --&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"plugins"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>array</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>bean</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"com.github.pagehelper.PageHelper"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"properties"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;</span><span><span><span>value</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> dialect=mysql</div></div></li><li><div><divdata-line-number="12"></div></div><div><div> <span><span>&lt;/</span><span><span><span>value</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;/</span><span><span><span>property</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span>&lt;/</span><span><span><span>bean</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;/</span><span><span><span>array</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;/</span><span><span><span>property</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> </div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span>&lt;/</span><span><span><span>bean</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 注意不同数据库的方言的使用</p> <h2 id="这样三剑客就都配置ok了"><a name="t8"></a> <a name="t17"target="_blank"></a>这样三剑客就都配置OK了</h2> </div>

MyBatis choose (when, otherwise) 标签

MyBatis choose (when, otherwise) 标签

choose (when, otherwise) 标签

有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用 if 标签时,只要 test 中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if 标签是与 (and) 的关系,而 choose 是或 (or) 的关系。

choose 标签是按顺序判断其内部 when 标签中的 test 条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的 sql。类似于 Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose 会从上到下选择一个 when 标签的 test 为 true 的 sql 执行。安全考虑,我们使用 where 将 choose 包起来,放置关键字多于错误。

<!--  choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->  
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">  
    SELECT *  
      FROM User u   
    <where>  
        <choose>  
            <when test="username !=null ">  
                u.username LIKE CONCAT(CONCAT(''%'', #{username, jdbcType=VARCHAR}),''%'')  
            </when >  
            <when test="sex != null and sex != '''' ">  
                AND u.sex = #{sex, jdbcType=INTEGER}  
            </when >  
            <when test="birthday != null ">  
                AND u.birthday = #{birthday, jdbcType=DATE}  
            </when >  
            <otherwise>  
            </otherwise>  
        </choose>  
    </where>    
</select>

choose (when,otherwize) , 相当于 java 语言中的 switch , 与 jstl 中 的 choose 很类似。

<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog">
        select * from t_blog where 1 = 1 
        <choose>
            <when test="title != null">
                and title = #{title}
            </when>
            <when test="content != null">
                and content = #{content}
            </when>
            <otherwise>
                and owner = "owner1"
            </otherwise>
        </choose>
    </select>

when 元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会输出,当所有的我很条件都不满足的时候就输出 otherwise 中的内容。所以上述语句的意思非常简单, 当 title!=null 的时候就输出 and titlte = #{title},不再往下判断条件,当 title 为空且 content!=null 的时候就输出 and content = #{content},当所有条件都不满足的时候就输出 otherwise 中的内容。

关于Mybatis choose when用法实例代码mybatis的choose when的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】、Java的MyBatis框架中MyBatis Generator代码生成器的用法、Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper、MyBatis choose (when, otherwise) 标签的相关知识,请在本站寻找。

本文标签: