028-86261949

当前位置:首页 > 技术交流 > IDEA+MAVEN搭建SSM项目集成PageHelper与MBG

IDEA+MAVEN搭建SSM项目集成PageHelper与MBG

2018/12/24 16:06 分类: 技术交流 浏览:40

一、基础项目结构搭建1搭建项目结构

File->New->Project
创建好项目后,在src/main目录下创建java和resources
File->Project Structrue
选中main,右键new folder,然后分别设置为Sources和Resources
创建测试的目录结构
Webapp中结构的配置:

1配置文件:2.1 pom.xml:

代码清单1:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.   <modelVersion>4.0.0</modelVersion>
  6.  
  7.   <groupId>cn.itsource</groupId>
  8.   <artifactId>crm</artifactId>
  9.   <version>1.0-SNAPSHOT</version>
  10.   <packaging>war</packaging>
  11.  
  12.   <name>crm</name>
  13.   <url>http://www.example.com</url>
  14.  
  15.   <properties>
  16.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17.     <maven.compiler.source>1.7</maven.compiler.source>
  18.     <maven.compiler.target>1.7</maven.compiler.target>
  19.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20.     <!-- spring版本号 -->
  21.     <spring.version>4.1.2.RELEASE</spring.version>
  22.     <!-- mybatis版本号 -->
  23.     <mybatis.version>3.2.1</mybatis.version>
  24.     <!-- log4j日志文件管理包版本 -->
  25.     <slf4j.version>1.7.2</slf4j.version>
  26.     <log4j.version>1.2.17</log4j.version>
  27.     <!-- jackson包版本 -->
  28.     <jackson.version>2.5.0</jackson.version>
  29.   </properties>
  30.  
  31.   <dependencies>
  32.     <!--JUnit-->
  33.     <dependency>
  34.       <groupId>junit</groupId>
  35.       <artifactId>junit</artifactId>
  36.       <version>4.11</version>
  37.       <scope>test</scope>
  38.     </dependency>
  39.  
  40.     <!--Spring核心-->
  41.     <dependency>
  42.       <groupId>org.springframework</groupId>
  43.       <artifactId>spring-aop</artifactId>
  44.       <version>${spring.version}</version>
  45.     </dependency>
  46.     <dependency>
  47.       <groupId>org.springframework</groupId>
  48.       <artifactId>spring-aspects</artifactId>
  49.       <version>${spring.version}</version>
  50.     </dependency>
  51.     <dependency>
  52.       <groupId>org.springframework</groupId>
  53.       <artifactId>spring-beans</artifactId>
  54.       <version>${spring.version}</version>
  55.     </dependency>
  56.     <dependency>
  57.       <groupId>org.springframework</groupId>
  58.       <artifactId>spring-context</artifactId>
  59.       <version>${spring.version}</version>
  60.     </dependency>
  61.     <dependency>
  62.       <groupId>org.springframework</groupId>
  63.       <artifactId>spring-core</artifactId>
  64.       <version>${spring.version}</version>
  65.     </dependency>
  66.     <dependency>
  67.       <groupId>org.springframework</groupId>
  68.       <artifactId>spring-expression</artifactId>
  69.       <version>${spring.version}</version>
  70.     </dependency>
  71.     <dependency>
  72.       <groupId>org.springframework</groupId>
  73.       <artifactId>spring-jdbc</artifactId>
  74.       <version>${spring.version}</version>
  75.     </dependency>
  76.     <dependency>
  77.       <groupId>org.springframework</groupId>
  78.       <artifactId>spring-test</artifactId>
  79.       <version>${spring.version}</version>
  80.     </dependency>
  81.     <dependency>
  82.       <groupId>org.springframework</groupId>
  83.       <artifactId>spring-tx</artifactId>
  84.       <version>${spring.version}</version>
  85.     </dependency>
  86.     <dependency>
  87.       <groupId>commons-logging</groupId>
  88.       <artifactId>commons-logging</artifactId>
  89.       <version>1.1.1</version>
  90.     </dependency>
  91.  
  92.     <!--SpringMVC-->
  93.     <dependency>
  94.       <groupId>org.springframework</groupId>
  95.       <artifactId>spring-web</artifactId>
  96.       <version>${spring.version}</version>
  97.     </dependency>
  98.     <dependency>
  99.       <groupId>org.springframework</groupId>
  100.       <artifactId>spring-webmvc</artifactId>
  101.       <version>${spring.version}</version>
  102.     </dependency>
  103.  
  104.     <!--aop依赖包-->
  105.     <dependency>
  106.       <groupId>aopalliance</groupId>
  107.       <artifactId>aopalliance</artifactId>
  108.       <version>1.0</version>
  109.     </dependency>
  110.     <dependency>
  111.       <groupId>org.aspectj</groupId>
  112.       <artifactId>aspectjweaver</artifactId>
  113.       <version>1.6.8</version>
  114.     </dependency>
  115.  
  116.     <!--文件上传-->
  117.     <dependency>
  118.       <groupId>commons-fileupload</groupId>
  119.       <artifactId>commons-fileupload</artifactId>
  120.       <version>1.3.1</version>
  121.     </dependency>
  122.     <dependency>
  123.       <groupId>commons-io</groupId>
  124.       <artifactId>commons-io</artifactId>
  125.       <version>2.2</version>
  126.     </dependency>
  127.     <!--jackson-->
  128.     <dependency>
  129.       <groupId>com.fasterxml.jackson.core</groupId>
  130.       <artifactId>jackson-databind</artifactId>
  131.       <version>${jackson.version}</version>
  132.     </dependency>
  133.     <dependency>
  134.       <groupId>com.fasterxml.jackson.core</groupId>
  135.       <artifactId>jackson-core</artifactId>
  136.       <version>${jackson.version}</version>
  137.     </dependency>
  138.     <dependency>
  139.       <groupId>com.fasterxml.jackson.core</groupId>
  140.       <artifactId>jackson-annotations</artifactId>
  141.       <version>${jackson.version}</version>
  142.     </dependency>
  143.  
  144.     <!--数据库连接池-->
  145.     <dependency>
  146.       <groupId>commons-dbcp</groupId>
  147.       <artifactId>commons-dbcp</artifactId>
  148.       <version>1.2.2</version>
  149.     </dependency>
  150.     <dependency>
  151.       <groupId>commons-pool</groupId>
  152.       <artifactId>commons-pool</artifactId>
  153.       <version>1.5.3</version>
  154.     </dependency>
  155.  
  156.     <!--Mybatis集成-->
  157.     <dependency>
  158.       <groupId>org.mybatis</groupId>
  159.       <artifactId>mybatis</artifactId>
  160.       <version>${mybatis.version}</version>
  161.     </dependency>
  162.     <dependency>
  163.       <groupId>org.mybatis</groupId>
  164.       <artifactId>mybatis-spring</artifactId>
  165.       <version>1.2.0</version>
  166.     </dependency>
  167.  
  168.     <!--log4j-->
  169.     <dependency>
  170.       <groupId>log4j</groupId>
  171.       <artifactId>log4j</artifactId>
  172.       <version>${log4j.version}</version>
  173.     </dependency>
  174.  
  175.     <!--slf4j-->
  176.     <dependency>
  177.       <groupId>org.slf4j</groupId>
  178.       <artifactId>slf4j-api</artifactId>
  179.       <version>${slf4j.version}</version>
  180.     </dependency>
  181.     <dependency>
  182.       <groupId>org.slf4j</groupId>
  183.       <artifactId>slf4j-log4j12</artifactId>
  184.       <version>${slf4j.version}</version>
  185.       <scope>test</scope>
  186.     </dependency>
  187.  
  188.     <!--数据库连接驱动-->
  189.     <dependency>
  190.       <groupId>mysql</groupId>
  191.       <artifactId>mysql-connector-java</artifactId>
  192.       <version>5.1.46</version>
  193.     </dependency>
  194.  
  195.     <!-- JSTL标签类 -->
  196.     <dependency>
  197.       <groupId>jstl</groupId>
  198.       <artifactId>jstl</artifactId>
  199.       <version>1.2</version>
  200.     </dependency>
  201.  
  202.     <!--servlet-->
  203.     <dependency>
  204.       <groupId>javax.servlet</groupId>
  205.       <artifactId>javax.servlet-api</artifactId>
  206.       <version>3.0.1</version>
  207.       <scope>provided</scope>
  208.     </dependency>
  209.  
  210.     <dependency>
  211.       <groupId>javax.servlet.jsp</groupId>
  212.       <artifactId>jsp-api</artifactId>
  213.       <version>2.2</version>
  214.       <scope>provided</scope>
  215.     </dependency>
  216.   </dependencies>
  217.  
  218.   <build>
  219.     <finalName>crm</finalName>
  220.     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  221.       <plugins>
  222.         <plugin>
  223.           <artifactId>maven-clean-plugin</artifactId>
  224.           <version>3.0.0</version>
  225.         </plugin>
  226.         <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  227.         <plugin>
  228.           <artifactId>maven-resources-plugin</artifactId>
  229.           <version>3.0.2</version>
  230.         </plugin>
  231.         <plugin>
  232.           <artifactId>maven-compiler-plugin</artifactId>
  233.           <version>3.7.0</version>
  234.         </plugin>
  235.         <plugin>
  236.           <artifactId>maven-surefire-plugin</artifactId>
  237.           <version>2.20.1</version>
  238.         </plugin>
  239.         <plugin>
  240.           <artifactId>maven-war-plugin</artifactId>
  241.           <version>3.2.0</version>
  242.         </plugin>
  243.         <plugin>
  244.           <artifactId>maven-install-plugin</artifactId>
  245.           <version>2.5.2</version>
  246.         </plugin>
  247.         <plugin>
  248.           <artifactId>maven-deploy-plugin</artifactId>
  249.           <version>2.8.2</version>
  250.         </plugin>
  251.         <plugin>
  252.           <groupId>org.mybatis.generator</groupId>
  253.           <artifactId>mybatis-generator-maven-plugin</artifactId>
  254.           <version>1.3.2</version>
  255.           <configuration>
  256.             <verbose>true</verbose>
  257.             <overwrite>true</overwrite>
  258.           </configuration>
  259.         </plugin>
  260.       </plugins>
  261.     </pluginManagement>
  262.   </build>
  263.  
  264. </project>
复制代码

2.2 web.xml:

代码清单2:
  1. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.          xmlns="http://java.sun.com/xml/ns/javaee"
  3.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  4.          version="3.0">
  5.   <display-name>crm</display-name>
  6.   <!-- Spring的配置文件 -->
  7.   <context-param>
  8.     <param-name>contextConfigLocation</param-name>
  9.     <param-value>classpath:applicationContext.xml</param-value>
  10.   </context-param>
  11.   <!--Spring*** ApplicationContext 载入 -->
  12.   <listener>
  13.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  14.   </listener>
  15.  
  16.   <!-- Spring MVC 核心配置开始 -->
  17.   <servlet>
  18.     <servlet-name>springmvc</servlet-name>
  19.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  20.     <init-param>
  21.       <param-name>contextConfigLocation</param-name>
  22.       <param-value>classpath:applicationContext-mvc.xml</param-value>
  23.     </init-param>
  24.     <load-on-startup>1</load-on-startup>
  25.   </servlet>
  26.   <servlet-mapping>
  27.     <servlet-name>springmvc</servlet-name>
  28.     <url-pattern>/</url-pattern>
  29.   </servlet-mapping>
  30.  
  31.   <!-- 编码过滤器 -->
  32.   <filter>
  33.     <filter-name>encodingFilter</filter-name>
  34.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  35.     <init-param>
  36.       <param-name>encoding</param-name>
  37.       <param-value>UTF-8</param-value>
  38.     </init-param>
  39.   </filter>
  40.   <filter-mapping>
  41.     <filter-name>encodingFilter</filter-name>
  42.     <url-pattern>/*</url-pattern>
  43.   </filter-mapping>
  44. </web-app>
复制代码

2.3 applicationContext-mvc.xml

代码清单3:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xmlns:context="http://www.springframework.org/schema/context"
  5.        xmlns:mvc="http://www.springframework.org/schema/mvc"
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  7.  
  8.     <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
  9.     <context:component-scan base-package="cn.itsource.crm.web.controller" />
  10.  
  11.     <!-- 启动SpringMVC的注解功能 -->
  12.     <mvc:annotation-driven/>
  13.  
  14.     <!--静态资源放行-->
  15.     <mvc:default-servlet-handler/>
  16.  
  17.     <!-- 定义跳转的文件的前后缀 ,视图解析器配置-->
  18.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19.         <property name="prefix" value="/WEB-INF/views/" />
  20.         <property name="suffix" value=".jsp" />
  21.     </bean>
  22.  
  23.     <!-- 配置文件上传解析器 -->
  24.     <bean id="multipartResolver"
  25.           class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  26.         <!-- 默认编码 -->
  27.         <property name="defaultEncoding" value="utf-8" />
  28.         <!-- 文件大小最大值 -->
  29.         <property name="maxUploadSize" value="10485760000" />
  30.     </bean>
  31. </beans>
复制代码

2.4 db.properties

代码清单4:
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql:///itsource_dms?useUnicode=true&characterEncoding=utf-8
  3. username=root
  4. password=123456
复制代码

2.5 log4j.properties

代码清单5:
  1. log4j.rootLogger=ERROR, stdout
  2. #log4j.rootLogger=NONE
  3. log4j.logger.cn.itsource=TRACE
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  5. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
复制代码

2.6 applicationContext.xml

代码清单6:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
  6.  
  7.     <!--扫描的包-->
  8.     <context:component-scan base-package="cn.itsource.crm.service"/>
  9.  
  10.     <!-- Jdbc配置文件 -->
  11.     <context:property-placeholder location="classpath:db.properties" />
  12.  
  13.     <!-- 数据源dataSource -->
  14.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  15.         <property name="driverClassName" value="${jdbc.driverClassName}" />
  16.         <property name="url" value="${jdbc.url}" />
  17.         <property name="username" value="${jdbc.username}" />
  18.         <property name="password" value="${jdbc.password}" />
  19.         <!--maxActive: 最大连接数量 -->
  20.         <property name="maxActive" value="150" />
  21.         <!--minIdle: 最小空闲连接 -->
  22.         <property name="minIdle" value="5" />
  23.         <!--maxIdle: 最大空闲连接 -->
  24.         <property name="maxIdle" value="20" />
  25.         <!--initialSize: 初始化连接 -->
  26.         <property name="initialSize" value="30" />
  27.         <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒 -->
  28.         <property name="maxWait" value="1000" />
  29.         <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->
  30.         <property name="timeBetweenEvictionRunsMillis" value="10000" />
  31.         <!-- 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
  32.         <property name="numTestsPerEvictionRun" value="10" />
  33.         <!-- 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程 -->
  34.         <property name="minEvictableIdleTimeMillis" value="10000" />
  35.         <property name="validationQuery" value="SELECT NOW() FROM DUAL" />
  36.     </bean>
  37.  
  38.     <!--Mybatis核心对象-->
  39.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  40.         <!-- 注入数据源 -->
  41.         <property name="dataSource" ref="dataSource" />
  42.         <!-- 配置mybatis (mapper)映射器路径 -->
  43.         <property name="mapperLocations" value="classpath*:cn/itsource/crm/mapper/*Mapper.xml" />
  44.         <!-- 配置mybatis 类型别名 -->
  45.         <property name="typeAliasesPackage">
  46.             <value>
  47.                 cn.itsource.crm.domain
  48.                 Cn.itsource.crm.query
  49.             </value>
  50.         </property>
  51.     </bean>
  52.  
  53.     <!--注入映射器,一劳永逸的做法-->
  54.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  55.         <property name="basePackage" value="cn.itsource.crm.mapper"></property>
  56.     </bean>
  57.  
  58.     <!--事务管理-->
  59.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  60.         <property name="dataSource" ref="dataSource"/>
  61.     </bean>
  62.  
  63.     <!--以注解的方式进行事务管理-->
  64.     <tx:annotation-driven transaction-manager="transactionManager"/>
  65.  
  66. </beans><span style="font-family: 宋体; font-size: 10.5pt; background-color: rgb(255, 255, 255);"> </span>
复制代码

二、Idea+Mybatis Generator自动生成Mybatis代码1 在pom文件中添加Mybatis Generator插件:

代码清单7:
  1. <plugin>
  2.   <groupId>org.mybatis.generator</groupId>
  3.   <artifactId>mybatis-generator-maven-plugin</artifactId>
  4.   <version>1.3.2</version>
  5.   <configuration>
  6.     <verbose>true</verbose>
  7.     <overwrite>true</overwrite>
  8.   </configuration>
  9. </plugin>
复制代码

2 在src/main/resources下创建generatorConfig.xml

代码清单8:
  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. <generatorConfiguration>
  6.     <classPathEntry location="D:/mysql-connector-java-5.1.42-bin.jar" />
  7.     <context id="test" targetRuntime="MyBatis3Simple">
  8.         <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
  9.         <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
  10.         <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
  11.         <commentGenerator>
  12.             <!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 false:表示保护 -->
  13.             <!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true -->
  14.             <property name="suppressDate" value="true" />
  15.             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  16.             <property name="suppressAllComments" value="true" />
  17.         </commentGenerator>
  18.         <!--数据库链接URL,用户名、密码 -->
  19.         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  20.                         connectionURL="jdbc:mysql://localhost:3306/itsource_dms" userId="root" password="123456">
  21.         </jdbcConnection>
  22.         <javaTypeResolver>
  23.             <property name="forceBigDecimals" value="false" />
  24.         </javaTypeResolver>
  25.         <!-- 生成模型的包名和位置 文件夹自己定义-->
  26.         <javaModelGenerator targetPackage="cn.itsource.crm.domain"
  27.                             targetProject="src/main/java">
  28.             <property name="enableSubPackages" value="true" />
  29.             <property name="trimStrings" value="true" />
  30.         </javaModelGenerator>
  31.         <!-- 生成映射文件的包名和位置 文件夹自己定义-->
  32.         <sqlMapGenerator targetPackage="cn.itsource.crm.mapper"
  33.                          targetProject="src/main/resources">
  34.             <property name="enableSubPackages" value="true" />
  35.         </sqlMapGenerator>
  36.         <!-- 生成DAO的包名和位置 文件夹自己定义-->
  37.         <javaClientGenerator type="XMLMAPPER"
  38.                              targetPackage="cn.itsource.crm.mapper" targetProject="src/main/java">
  39.             <property name="enableSubPackages" value="true" />
  40.         </javaClientGenerator>
  41.  
  42.         <!-- 要生成哪些表 -->
  43.         <table tableName="t_employee" domainObjectName="Employee"></table>
  44.     </context>
  45. </generatorConfiguration>
复制代码

3 执行生成代码

点击run->Edit configurations

三、集成Mybatis分页插件1 pom添加依赖

代码清单9:
  1. <!--mybatis分页插件-->
  2. <dependency>
  3.   <groupId>com.github.pagehelper</groupId>
  4.   <artifactId>pagehelper</artifactId>
  5.   <version>4.1.4</version>
  6. </dependency>
复制代码

2 Mybatis分页插件的配置

在applicationContext的sqlSessionFactory中配置属性
代码清单10:
  1. <property name="plugins">
  2.     <array>
  3.         <bean class="com.github.pagehelper.PageHelper">
  4.             <property name="properties">
  5.                 <value>
  6.                     <!-- 你使用的数据库类型 -->
  7.                     dialect=mysql
  8.                     reasonable=true
  9.                 </value>
  10.             </property>
  11.         </bean>
  12.     </array>
  13. </property>
复制代码

3 分页插件的使用

代码清单11:
  1. //执行查询所有之前设置分页条件
  2. Page page = PageHelper.startPage(1, 10);
  3. //查询所有数据,返回的是分页后的数据
  4. List<Employee> list = employeeService.getAll();
  5. for(Employee e:list){
  6.     System.out.println(e);
  7. }
  8. //获取总条目数
  9. System.out.println(page.getTotal());
复制代码
#标签:Java,源码时代,源码时代重庆校区,重庆IT培训,重庆Java,重庆Java培训机构,Java培训,重庆Java培训,Java编程