一、代码生成器
1.引入jar包
1 <!--代码生成器插件--> 2 <plugin> 3 <groupId>org.mybatis.generator</groupId> 4 <artifactId>mybatis-generator-maven-plugin</artifactId> 5 <version>1.3.2</version> 6 <configuration> 7 <!--自定义代码生成器的路径--> 8 <!--<configurationFile>yourLocation/mybatis- generatorConfig.xml</configurationFile>--> 9 <verbose>true</verbose> 10 <overwrite>true</overwrite> 11 </configuration> 12 </plugin>
2.配置generatorConfig.xml
注意名字必须是这个generatorConfig.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 <!-- 自动生成器的配置(根目录,不做过多介绍)--> 6 <generatorConfiguration> 7 <!-- 8 classPathEntry:可以配置多个,也不配置 9 数据库驱动:这里找到相应的驱动jar包就可以了(注:不同数据库的jar不一样) 10 location:里面的是路径(也可以直接写绝对路径 -> 如:E:\mybatis\mysql-connector-java-5.1.26-bin.jar) 11 --> 12 <classPathEntry location="D:/openSource/mysql-connector-java-5.1.26-bin.jar"/> 13 <!-- 14 context:用于生成一组对象的环境(至少配置1个,可以配置多个) 15 id:表达唯一的名称 16 targetRuntime:用于指定生成的代码的运行环境(MyBatis3/MyBatis3Simple) 17 MyBatis3:默认值 18 MyBatis3Simple:不会生成与Example(案例)相关的方法 19 --> 20 <context id="DB2Tables" targetRuntime="MyBatis3Simple" > 21 <!-- 22 用于配置如果生成注释信息(最多可以配置一下) 23 suppressAllComments:阻止生成注释 ,默认为false 24 suppressDate:阻止生成的注释 时间戳,默认为false 25 addRemarkComments:注释是否添加数据库表的备注信息,默认为false 26 --> 27 <commentGenerator> 28 <property name="suppressDate" value="true"/> 29 <property name="suppressAllComments" value="true"/> 30 </commentGenerator> 31 <!-- 32 这个应该比较清楚,配置连接数据库的基本信息 33 --> 34 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 35 connectionURL="jdbc:mysql:///mybatis" 36 userId="root" password="000000"> 37 </jdbcConnection> 38 <!-- 39 用于指定JDBC类型和Java类型如何转换,最多可以配置一个 40 forceBigDecimals:控制是否强制将DECIMAL和NUMERIC类型的JDBC字段转换成Java类型的 BigDecimal 41 默认为false,一般不需要配置 42 --> 43 <javaTypeResolver> 44 <property name="forceBigDecimals" value="false"/> 45 </javaTypeResolver> 46 47 <!-- 48 javaModelGenerator:用来控制生成的实体类 49 targetPackage:生成Model类存放位置(包名) 50 targetProject:指定目标项目路径(根目录) 51 对应的子属性: 52 trimStrings:判断是否对数据库查询结果进行trim操作(默认false) 53 --> 54 <javaModelGenerator targetPackage="cn.susu.domain" targetProject="src/main/java"> 55 <property name="trimStrings" value="true"/> 56 </javaModelGenerator> 57 <!-- 58 sqlMapGenerator:生成映射文件存放位置(Mapper.xml文件) 59 targetPackage:生成SQL映射文件(XML文件)在哪个包中 60 targetProject:指定目标项目路径(根目录) 61 --> 62 <sqlMapGenerator targetPackage="cn.susu.mapper" targetProject="src/main/resources"> 63 </sqlMapGenerator> 64 65 <!-- 66 javaClientGenerator:Java客户端生成器(生成Dao/Mapper的接口) 67 该 标签可选(最多配置一个),如果不配置,就不会生成Mapper接口 68 type:选择客户端代码生成器 69 MyBatis3 70 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 71 MIXEDMAPPER:XML和注解混合形式 72 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 73 MyBatis3Simple 74 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 75 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 76 targetPackage:生成Mapper接口存放的包名 77 targetProject:指定目标项目路径 78 --> 79 <javaClientGenerator type="XMLMAPPER" targetPackage="cn.susu.mapper" targetProject="src/main/java"> 80 <property name="enableSubPackages" value="true"/> 81 </javaClientGenerator> 82 <!-- 83 table:生成对应表及类名 84 tableName:对应表名(注:%代表所有) 85 domainObjectName:对应的类名 86 generatedKey:主键自增的id字段(针对当前 数据库配置MySQL) 87 --> 88 <table tableName="employee" domainObjectName="Employee"> 89 <generatedKey column="id" sqlStatement="MySql" /> 90 </table> 91 </context> 92 </generatorConfiguration>
3.使用
idea右侧工具栏--->mavenProjects---->plugins---->双击mybatis-generator:generate
二、拦截器
1.写一个类实现 Interceptor
1 package cn.susu.intercept; 2 3 import org.apache.ibatis.executor.Executor; 4 import org.apache.ibatis.mapping.MappedStatement; 5 import org.apache.ibatis.plugin.*; 6 import org.apache.ibatis.session.ResultHandler; 7 import org.apache.ibatis.session.RowBounds; 8 9 import java.util.Properties; 10 11 @Intercepts( 12 @Signature( 13 type= Executor.class, 14 method = "query", 15 args = {MappedStatement.class,Object.class, RowBounds.class, ResultHandler.class} 16 ) 17 ) 18 public class HeInterceptor implements Interceptor { 19 20 //拦截后进入的核心操作 21 @Override 22 public Object intercept(Invocation invocation) throws Throwable { 23 System.out.println("======你被拦截啦======"); 24 //放行 25 return invocation.proceed(); 26 } 27 28 //要拦截的 29 //返回null代表所有都不拦截 30 @Override 31 public Object plugin(Object o) { 32 //这么配置了,才会更具配置进行拦截 33 return Plugin.wrap(o, this); 34 } 35 36 //获取拦截器中的参数 37 //更具参数进行拦截操作 38 @Override 39 public void setProperties(Properties properties) { 40 System.out.println(properties.getProperty("dbType")); 41 } 42 }
2.配置mybatis-config.xml
1 <!--拦截器--> 2 <plugins> 3 <plugin interceptor="cn.susu.intercept.HeInterceptor"> 4 <property name="dbType" value="mysql"></property> 5 </plugin> 6 </plugins>
三、利用插件分页
1.引入分页插件
1 <!--mybatis分页插件--> 2 <dependency> 3 <groupId>com.github.pagehelper</groupId> 4 <artifactId>pagehelper</artifactId> 5 <version>5.0.1</version> 6 </dependency>
2.配置拦截器
1 <!--配置一个拦截器(分页插件):注意一下版本问题--> 2 <property name="plugins"> 3 <array> 4 <bean class="com.github.pagehelper.PageInterceptor"> 5 <property name="properties"> 6 <value>helperDialect=mysql</value> 7 </property> 8 </bean> 9 </array> 10 </property>
3.使用
1 PageHelper.startPage(currentPage,pageSize);
原文:https://www.cnblogs.com/guangbin0125/p/10674499.html