01、Mybatis的三剑客

01、Mybatis的三剑客

Mybatis-Generator

简介

Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件(Mapper文件、Dao接口、JavaBean)

github地址

使用

mybatis-generator有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。

Maven插件使用

1、添加Maven插件的pom依赖

<build>  <plugins>  <plugin>    <!-- 添加mybatis.generator的插件依赖 -->    <groupId>org.mybatis.generator</groupId>      <artifactId>mybatis-generator-maven-plugin</artifactId>      <version>1.3.6</version>  </plugin>  </plugins></build>

2、新建generatorConfig.xml内容如下;详细的注释参考;注意:这里使用了数据配置文件datasource.properties

<?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>    <!--导入属性配置-->    <properties resource="datasource.properties"></properties>    <!--指定特定数据库的jdbc驱动jar包的位置-->    <classPathEntry location="${db.driverLocation}"/>    <context id="default" targetRuntime="MyBatis3">        <!-- optional,旨在创建class时,对注释进行控制 -->        <commentGenerator>            <property name="suppressDate" value="false"/>            <property name="suppressAllComments" value="true"/>        </commentGenerator>        <!--jdbc的数据库连接 -->        <jdbcConnection                driverClass="${db.driverClassName}"                connectionURL="${db.url}"                userId="${db.username}"                password="${db.password}">        </jdbcConnection>        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->        <javaTypeResolver>            <property name="forceBigDecimals" value="false"/>        </javaTypeResolver>        <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类            targetPackage     指定生成的model生成所在的包名            targetProject     指定在该项目下所在的路径        -->        <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->        <javaModelGenerator targetPackage="com.weir.pojo" targetProject="./src/main/java">            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->            <property name="enableSubPackages" value="false"/>            <!-- 是否对model添加 构造函数 -->            <property name="constructorBased" value="true"/>            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->            <property name="trimStrings" value="true"/>            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->            <property name="immutable" value="false"/>        </javaModelGenerator>        <!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->        <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">            <property name="enableSubPackages" value="false"/>        </sqlMapGenerator>        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口        -->        <!-- targetPackage:mapper接口dao生成的位置 -->        <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->        <javaClientGenerator type="XMLMAPPER" targetPackage="com.weir.dao" targetProject="./src/main/java">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <table tableName="mmall_shipping" domainObjectName="Shipping" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_cart" domainObjectName="Cart" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_cart_item" domainObjectName="CartItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_order" domainObjectName="Order" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_order_item" domainObjectName="OrderItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_pay_info" domainObjectName="PayInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <table tableName="mmall_product" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">            <columnOverride column="detail" jdbcType="VARCHAR" />            <columnOverride column="sub_images" jdbcType="VARCHAR" />        </table>        <table tableName="mmall_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>        <!--  mybatis插件的搭建 -->    </context></generatorConfiguration>

datasource.properties内容如下:

db.driverLocation=D:/Software/Develop/Maven/apache-maven-3.5.0/springboot_repository/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jardb.driverClassName=com.mysql.jdbc.Driver #mysql驱动所在位置db.url=jdbc:mysql://127.0.0.01:3306/mydb?characterEncoding=utf-8db.username=rootdb.password=db.initialSize = 20db.maxActive = 50db.maxIdle = 20db.minIdle = 10db.maxWait = 10db.defaultAutoCommit = truedb.minEvictableIdleTimeMillis = 3600000

3、运行Maven命令;EClipse的操作如下

Mybatis-plugin

对于Mybatis的配置文件编辑少不了这个插件帮忙,作用如下:详情查考

  • 提供Mapper接口与配置文件中对应SQL的导航
  • 编辑XML文件时自动补全
  • 根据Mapper接口, 使用快捷键生成xml文件及SQL标签
  • ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C)
  • 快捷键生成@Param注解
  • XML中编辑SQL时, 括号自动补全
  • XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数)
  • 自动检查Mapper XML文件中ID冲突
  • 自动检查Mapper XML文件中错误的属性值
  • 支持Find Usage
  • 支持重构从命名
  • 支持别名
  • 自动生成ResultMap属性
  • 快捷键: Option + Enter(Mac) | Alt + Enter(Windows)
  • 总之,Mybatis plugin就是一款可以让你的编程效率加倍的工具,像写代码一样写sql和Mybatis文件。

这里重点介绍安装在IDEA中Free Mybatis plugin会有更好的,毕竟另一款Mybatis plugin需要破解或付费比较麻烦。

Mybatis-Helper

使用Mybatis的物理分页插件;简化sql的编写。PageHelper插件在github上有开源,Github地址。

1、导入依赖的jar,pom.xml文件依赖如下:

dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper</artifactId>    <version>4.1.4</version></dependency>

applicationContext-datasource.xml中配置分页插件如下:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <property name="dataSource" ref="dataSource"/>    <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml"></property>    <!-- 分页插件 -->    <property name="plugins">        <array>            <bean class="com.github.pagehelper.PageHelper">                <property name="properties">                    <value>                        dialect=mysql                    </value>                </property>            </bean>        </array>    </property></bean>

2、在执行的sql前添加如下代码:

public List getProductList(int pageNum, int pageSize) {    //设置分页参数(pageNum:第几页,pagesize:一页数量)    PageHelper.startPage(pageNum, pageSize);    //调用Dao层的sql    List productList =  productMapper.selectList();    //获取分页参数    PageInfo pageResult = new PageInfo(productList);    return productList;}

3、运行测试

总结:其实Mybatis的pageHelper的分页方式还有其他的方式;这里使用简单的方式。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部