代码生成器

首先meaven项目中导入支持包

 1 <dependencies>
 2     <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
 3     <dependency>
 4         <groupId>mysql</groupId>
 5         <artifactId>mysql-connector-java</artifactId>
 6         <version>5.1.46</version>
 7     </dependency>
 8 
 9     <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
10     <dependency>
11         <groupId>org.mybatis</groupId>
12         <artifactId>mybatis</artifactId>
13         <version>3.2.1</version>
14     </dependency>
15     <dependency>
16         <groupId>org.slf4j</groupId>
17         <artifactId>slf4j-api</artifactId>
18         <version>1.6.1</version>
19     </dependency>
20     <dependency>
21         <groupId>org.slf4j</groupId>
22         <artifactId>slf4j-log4j12</artifactId>
23         <version>1.6.1</version>
24         <scope>runtime</scope>
25     </dependency>
26     <dependency>
27         <groupId>log4j</groupId>
28         <artifactId>log4j</artifactId>
29         <version>1.2.14</version>
30     </dependency>
31 
32     <!-- https://mvnrepository.com/artifact/junit/junit -->
33     <dependency>
34         <groupId>junit</groupId>
35         <artifactId>junit</artifactId>
36         <version>4.12</version>
37         <!--<scope>test</scope>-->
38     </dependency>
39 </dependencies>
40 
41 <build>
42     <plugins>
43         <plugin>
44             <groupId>org.apache.maven.plugins</groupId>
45             <artifactId>maven-compiler-plugin</artifactId>
46             <configuration>
47                 <source>1.8</source>
48                 <target>1.8</target>
49             </configuration>
50         </plugin>
51     </plugins>
52 </build>

准备代码生成器插件

pom.xml

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
 1 build>
 2     <plugins>
 3         <!--代码生成器插件-->
 4         <plugin>
 5             <groupId>org.mybatis.generator</groupId>
 6             <artifactId>mybatis-generator-maven-plugin</artifactId>
 7             <version>1.3.2</version>
 8             <configuration>
 9                 <!--自定义代码生成器的路径-->
10                 <!--<configurationFile>yourLocation/mybatis-generator-config.xml</configurationFile>-->
11                 <verbose>true</verbose>
12                 <overwrite>true</overwrite>
13             </configuration>
14         </plugin>
15     </plugins>
16 </build>

 

generatorConfig.xml

这个xml在resource中名字必须要是这个,否者会报错。

 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="G:\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="admin">
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.itsource._02_generator.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.itsource._02_generator.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.itsource._02_generator.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 
92        <!--
93         <table tableName="%" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
94                enableSelectByExample="false" selectByExampleQueryId="false" >
95         </table>
96         -->
97     </context>
98 </generatorConfiguration>

MyBatis拦截器

 1 //配置查询拦截
 2 @Intercepts(
 3         @Signature(
 4                 type = Executor.class,
 5                 method = "query",
 6                 args = {MappedStatement.class,Object.class, RowBounds.class, ResultHandler.class}
 7 
 8         )
 9 )
10 public class myinterceptor implements Interceptor {
11 
12     @Override
13     public Object intercept(Invocation invocation) throws Throwable {
14         System.out.println("这里是拦截器");
15         return invocation.proceed();
16     }
17 
18     @Override
19     public Object plugin(Object o) {
20         return Plugin.wrap(o,this);
21     }
22 
23     @Override
24     public void setProperties(Properties properties) {
25 
26     }
27 }

拦截器的配置

在mybatis-config.xml中进行配置

<!--插件配置(拦截器配置)-->
<plugins>
    <plugin interceptor="cn.itsource._02_generator.interceptor.HelloInterceptor">
        <property name="dbType" value="mySql" />
    </plugin>
</plugins>

分页插件

引入这个插件

 <!-- 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.0</version>
</dependency>

插件配置

在mybatis-config.xml中进行配置

<plugins>
    <!--配置分页插件-->
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>

使用分页插件

 1 @Test
 2 public void testPage() throws Exception{
 3     //分页 pageNum:第几页  pageSize:每页条数
 4     PageHelper.startPage(1, 10);
 5 
 6     SqlSession session = MyBatisUtil.openSession();
 7     EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
 8     List<Employee> employees = mapper.selectAll();
 9     Page page = (Page) employees;
10     System.out.println("第几页:"+page.getPageNum()); //第几页
11     System.out.println("总页数:"+page.getPages()); //总页数
12     System.out.println("总条数:"+page.getTotal()); //总页数
13     System.out.println("结果:"+page.getResult());
14 
15     page.getResult().forEach(e -> System.out.println(e));
16 }

 

 

 

SSM集成

首先是jdbc.properites

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.username=root
jdbc.password=admin

然后配置applicationContext.xm

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:context="http://www.springframework.org/schema/context"
 4        xmlns:tx="http://www.springframework.org/schema/tx"
 5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 6        xsi:schemaLocation="
 7        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 8        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
 9        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
10 ">
11 
12     <!--扫描Service层-->
13     <context:component-scan base-package="cn.newsoft.service" />
14 
15     <!--引入jdbc.properties-->
16     <context:property-placeholder location="classpath:jdbc.properties" />
17     <!--创建数据源(dataSource)-->
18     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
19         <property name="driverClassName" value="${jdbc.driverClassName}" />
20         <property name="url" value="${jdbc.url}" />
21         <property name="username" value="${jdbc.username}" />
22         <property name="password" value="${jdbc.password}" />
23     </bean>
24 
25     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
26         <property name="dataSource" ref="dataSource" />
27         <!--XML的映射-->
28         <property name="mapperLocations" value="classpath:cn/newsoft/mapper/*.xml" />
29         <!--为所有相应的包中的类取别名-->
30         <property name="typeAliasesPackage" value="cn.newsoft.domain" />
31     </bean>
32 
33 
34    <!--创建映射器-->
35     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
36         <property name="basePackage" value="cn.newsoft.mapper" />
37     </bean>
38 
39     <!--配置事务管理器-->
40     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
41         <property name="dataSource" ref="dataSource" />
42     </bean>
43     <!--配置标签支持事务-->
44     <tx:annotation-driven transaction-manager="transactionManager" />
45 </beans>

l这样就完成了mybatis和sping的集成了,需要注意的是,在mapper.xml在resource中的位置需要与在src中mapper的位置对应上才行

 MyBatis高级及其SSM框架搭建 随笔

Spring与SpringMVC

applicationContext-mvc.xml

 
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3 
 4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xmlns:mvc="http://www.springframework.org/schema/mvc"
 7        xsi:schemaLocation="http://www.springframework.org/schema/beans
 8                     http://www.springframework.org/schema/beans/spring-beans.xsd
 9                     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
10                    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
11 ">
12     <!--配置包扫描-->
13     <context:component-scan base-package="cn.newsoft.controller"></context:component-scan>
14     <!--注解支持-->
15     <mvc:annotation-driven></mvc:annotation-driven>
16 
17         <!--静态资源访问-->
18     <mvc:default-servlet-handler />
19         <!--视图解析器-->
20     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
21         <property name="prefix" value="/WEB-INF/views"></property>
22         <property name="suffix" value=".jsp"></property>
23     </bean>
24     <!--上传文件-->
25     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
26         <!-- 设置上传文件的最大尺寸为1MB -->
27         <property name="maxUploadSize">
28             <value>1048576</value>
29         </property>
30     </bean>
31 
32 </beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
           version="3.0">
        <!--解决乱码问题-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--读取sping配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--读取mvc文件-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-mvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
      
</web-app>

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄