MyBatis学习笔记03

一、代码生成器

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);

猜你喜欢

转载自www.cnblogs.com/guangbin0125/p/10674499.html