1.项目需要的依赖包(jar包)
    在pom.xml添加包依赖:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. 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. <name>ssm-curd</name>
    7. <groupId>com.wj</groupId>
    8. <artifactId>ssm-curd</artifactId>
    9. <version>1.0-SNAPSHOT</version>
    10. <packaging>war</packaging>
    11. <properties>
    12. <!-- 统一管理项目中 Spring 的版本 -->
    13. <edu.hue.spring.version>5.2.9.RELEASE</edu.hue.spring.version>
    14. </properties>
    15. <!-- 引入项目依赖的 jar 包 -->
    16. <dependencies>
    17. <!-- Spring 的 SpringMVC 模块的 的 jar 包 -->
    18. <dependency>
    19. <groupId>org.springframework</groupId>
    20. <artifactId>spring-webmvc</artifactId>
    21. <version>${edu.hue.spring.version}</version>
    22. </dependency>
    23. <!--返回json字符串自持-->
    24. <dependency>
    25. <groupId>com.fasterxml.jackson.core</groupId>
    26. <artifactId>jackson-databind</artifactId>
    27. <version>2.9.9</version>
    28. </dependency>
    29. <!-- Spring JDBC 模块的 jar 包 -->
    30. <dependency>
    31. <groupId>org.springframework</groupId>
    32. <artifactId>spring-jdbc</artifactId>
    33. <version>${edu.hue.spring.version}</version>
    34. </dependency>
    35. <!-- 引入 Spring 单元测试模块 -->
    36. <dependency>
    37. <groupId>org.springframework</groupId>
    38. <artifactId>spring-test</artifactId>
    39. <version>${edu.hue.spring.version}</version>
    40. </dependency>
    41. <!-- Spring 面向切面编程的 jar 包 -->
    42. <dependency>
    43. <groupId>org.springframework</groupId>
    44. <artifactId>spring-aspects</artifactId>
    45. <version>${edu.hue.spring.version}</version>
    46. </dependency>
    47. <!-- 引入 MyBatis 的 jar 包 -->
    48. <dependency>
    49. <groupId>org.mybatis</groupId>
    50. <artifactId>mybatis</artifactId>
    51. <version>3.4.6</version>
    52. </dependency>
    53. <!-- MyBatis整合 Spring的适配包 -->
    54. <dependency>
    55. <groupId>org.mybatis</groupId>
    56. <artifactId>mybatis-spring</artifactId>
    57. <version>1.3.1</version>
    58. </dependency>
    59. <!-- 引入mybatis逆向工程的jar包 -->
    60. <dependency>
    61. <groupId>org.mybatis.generator</groupId>
    62. <artifactId>mybatis-generator-core</artifactId>
    63. <version>1.3.7</version>
    64. </dependency>
    65. <!-- 数据库连接池、驱动 -->
    66. <dependency>
    67. <groupId>com.alibaba</groupId>
    68. <artifactId>druid</artifactId>
    69. <version>1.1.12</version>
    70. </dependency>
    71. <!-- 连接mysql的驱动 -->
    72. <dependency>
    73. <groupId>mysql</groupId>
    74. <artifactId>mysql-connector-java</artifactId>
    75. <version>5.1.47</version>
    76. </dependency>
    77. <!-- 引入 jstl -->
    78. <dependency>
    79. <groupId>jstl</groupId>
    80. <artifactId>jstl</artifactId>
    81. <version>1.2</version>
    82. </dependency>
    83. <!-- servlet-api -->
    84. <dependency>
    85. <groupId>javax.servlet</groupId>
    86. <artifactId>javax.servlet-api</artifactId>
    87. <version>3.0.1</version>
    88. <scope>provided</scope>
    89. </dependency>
    90. <!-- junit -->
    91. <dependency>
    92. <groupId>junit</groupId>
    93. <artifactId>junit</artifactId>
    94. <version>4.13.2</version>
    95. <scope>test</scope>
    96. </dependency>
    97. <!-- 引入pagehelper分页查询插件 -->
    98. <dependency>
    99. <groupId>com.github.pagehelper</groupId>
    100. <artifactId>pagehelper</artifactId>
    101. <version>5.2.0</version>
    102. </dependency>
    103. <!--加入校验包-->
    104. <dependency>
    105. <groupId>org.hibernate</groupId>
    106. <artifactId>hibernate-validator</artifactId>
    107. <version>5.4.1.Final</version>
    108. </dependency>
    109. </dependencies>
    110. <build>
    111. <plugins>
    112. <plugin>
    113. <groupId>org.apache.maven.plugins</groupId>
    114. <artifactId>maven-surefire-plugin</artifactId>
    115. <version>2.4.2</version>
    116. <configuration>
    117. <skipTests>true</skipTests>
    118. </configuration>
    119. </plugin>
    120. </plugins>
    121. </build>
    122. </project>

    完成查看:
    image.png
    2.创建mybatis配置文件:mybatis-3-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!--驼峰命名规则-->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
        <!--类型别名-->
        <typeAliases>
            <package name="com.wj.crud.bean"/>
        </typeAliases>
    
        <plugins>
            <plugin interceptor="com.github.pagehelper.PageInterceptor">
                <!--分页参数合理化  -->
                <property name="reasonable" value="true"/>
            </plugin>
        </plugins>
    
    </configuration>
    

    3.创建Spring配置文件:applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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
                               http://mybatis.org/schema/mybatis-spring
                               http://mybatis.org/schema/mybatis-spring.xsd
                               http://www.springframework.org/schema/aop
                               http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <!-- Spring配置文件,这里主要是和业务逻辑有关的 -->
    
        <!-- Spring不扫描控制器 -->
        <context:component-scan base-package="com.wj.crud">
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
        <!-- =============================数据源=============================== -->
        <context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder>
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${jdbc.driver}"></property>
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
        <!-- =============================数据源=============================== -->
    
        <!-- ============================事务控制的配置================================ -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 指定数据源的位置 -->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
        <!-- 两种方法:
                1、开启基于注解的事务
                2、使用 xml 配置形式的事务(比较重要的都使用配置式)
        -->
        <!-- 配置式 -->
        <aop:config>
            <!-- 配置切入点 expression:切入点表达式 -->
            <aop:pointcut id="txPoint" expression="execution(* com.wj.crud.service..*(..))"/>
            <!-- 配置切面:配置事务增强 -->
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"></aop:advisor>
        </aop:config>
    
        <!-- 配置事务增强:如何切入 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- *:表示所有方法都是事务方法 -->
                <tx:method name="*"/>
                <!-- 以get开始的方法
                    read-only="true":设置只读
                -->
                <tx:method name="get*" read-only="true"/>
            </tx:attributes>
        </tx:advice>
        <!-- ============================事务控制的配置================================ -->
    
        <!-- ==============================配置和 MyBatis 的整合============================ -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 数据源 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 指定 MyBatis全局配置文件的位置 -->
            <property name="configLocation" value="classpath:mybatis-config.xml"></property>
            <!-- 指定 mapper 文件的位置 -->
            <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
        </bean>
    
        <!-- 扫描所有 mapper 接口的实现类,将其加入 IOC 容器中 -->
        <mybatis:scan base-package="com.wj.crud.dao"></mybatis:scan>
        <!-- ==============================配置和 MyBatis 的整合============================ -->
    
        <!-- 配置一个可以执行批量操作的sqlSession -->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
            <constructor-arg name="executorType" value="BATCH"></constructor-arg>
        </bean>
    
    </beans>
    

    4.数据库连接配置文件:dbconfig.properties

    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_crud
    jdbc.user=root
    jdbc.password=123456
    

    5.创建SpringMvc配置文件:dispatcherServlet-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
        <!--SpringMVC的配置文件,包含网站跳转逻辑的控制,配置  -->
        <context:component-scan base-package="com.wj" use-default-filters="false">
            <!--只扫描控制器。  use-default-filters="false  true为扫描所有-->
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
        <!--配置视图解析器,方便页面返回  -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
        <!--两个标准配置  -->
        <!-- 将springmvc不能处理的请求交给tomcat -->
        <mvc:default-servlet-handler/>
        <!-- 能支持springmvc更高级的一些功能,JSR303校验,快捷的ajax...映射动态请求 -->
        <mvc:annotation-driven/>
    
    </beans>
    

    6.创建mybatis逆向工程文件:mbg.xml

    <?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>
    
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!--阻止mbg生成注释-->
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!-- 配置数据库连接 -->
            <jdbcConnection
                    driverClass="com.mysql.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/ssm_crud"
                    userId="root"
                    password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- 指定javaBean生成的位置 -->
            <javaModelGenerator targetPackage="com.wj.crud.bean"
                targetProject=".\src\main\java">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
    
            <!--指定sql映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
            <!-- 指定dao接口生成的位置,mapper接口 -->
            <javaClientGenerator type="XMLMAPPER"
                targetPackage="com.wj.crud.dao" targetProject=".\src\main\java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
    
            <!-- table指定每个表的生成策略 -->
            <table tableName="tbl_dept" domainObjectName="Department"></table>
            <table tableName="tbl_emp" domainObjectName="Employee"></table>
    
        </context>
    </generatorConfiguration>
    

    在pom.xml 引入依赖包

    org.mybatis.generator
    mybatis-generator-core
    1.3.7

    以及创建MBGTest.java类
    MBG为mybatis逆向工程包 :mybatis.generator

    作用:Mybatis Generator是Mybatis的代码生成工具,它根据数据库的表结构信息,逆向生成Java代码中对应的POJO类、DAO层以及映射文件等。对数据库的基本操作CRUD等都可以直接通过它创建的类调用完成,省去了手动写这些重复代码的工作。

    package com.wj.crud.test;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    
    
    public class MBGTest {
    
        public void mbg() throws Exception {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File("./src/main/resources/mbg.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        }
    }
    

    自动生成文件如图所示:
    image.png

    上面的配置文件位置如图所示:
    image.png