SSM整合搭建(二)

栏目: IT技术 · 发布时间: 5年前

内容简介:之后我们来配置SpringMVC的配置文件,主要是配置跳转的逻辑先扫描所有的业务逻辑组件

本页来衔接上一页继续来搭建SSM,再提一下大家如果不详细可以再去看视频哦,B站就有

之后我们来配置SpringMVC的配置文件,主要是配置跳转的逻辑

SSM整合搭建(二)

先扫描所有的业务逻辑组件

SSM整合搭建(二)

我们要用SpringMVC去扫描包 那么就应该先去建立包

SSM整合搭建(二)

我们给SpringMVC设置扫描仅仅是Controller的包  并且禁止默认

SSM整合搭建(二)

    <!-- SpringMVC的配置文件,包含网站跳转逻辑的控制,配置 -->
    <context:component-scan base-package="com.atguigu" use-default-filters="false">
        <!-- 只扫描控制器 -->
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

之后我们再配置视图解析器,设置前缀与后缀,告知跳转的路径

SSM整合搭建(二)

    <!-- 配置视图解析器,方便页面返回 -->
    
    <bean>
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

SSM整合搭建(二)

设置两个标准配置

SSM整合搭建(二)

首先第一个是配置一个如果有SpringMVC不能处理的请求则交给tomcat  这样就能让动态静态资源都返回成功

SSM整合搭建(二)

第二个是能使用Springmvc的一些高级功能

    <!-- 设置两个标准配置  -->
    <!-- 将SpringMVC不能处理的请求交给tomcat  这样就能让动态静态资源都能返回成功 -->
    <mvc:default-servlet-handler/>
    <!-- 能支持springmvc更高级的一些功能,JSR303校验 快捷的ajax请求等等 -->
    <mvc:annotation-driven/>

接下来就是来配置Spring的配置文件

首先先配置数据源

SSM整合搭建(二)

因为这些数据都不是写死的 我们需要新建一个properties存储数据

在resources下创建一个dbconfig 存储配置数据

SSM整合搭建(二)

这是我的配置 为了不跟别的混乱 我们跟这个数据库有关的都加上jdbc前缀

SSM整合搭建(二)

写好之后我们需要外部引入dbconfig。这时候就需要context标签

SSM整合搭建(二)

然后我们就将dbconfig引入并填充到之前的数据源中

SSM整合搭建(二)

    <!--Spring的配置文件,这里主要配置和业务逻辑有关的  -->
    <!--数据源 事务控制等核心  -->
    <context:property-placeholder location="classpath:dbconfig.properties"/>
    <!-- 配置数据源 -->
    <bean id="pooledDataSource" >
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

然后我们配置和SpringMVC一样的扫描包 这次就扫描除了controller的就行

SSM整合搭建(二)

    <context:component-scan base-package="com.atguigu">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

配置好数据源后 我们需要开始配置和mybatis的整合

SSM整合搭建(二)

    <!-- 配置和mybatis的整合 -->
    <bean id="sqlSessionFactory">
        <!-- 指定mybatis全局配置文件的位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

所以我们也先创建mybatis的配置文件 在resources建立 mybatis-config.xml  图片有点糊

SSM整合搭建(二)

SSM整合搭建(二)

配置文件的内容以后再填充

之后还需要导入数据源和引用mapper.xml的文件 所以我们先创建一个mapper的文件夹 在resources下

SSM整合搭建(二)

这就是完整的和mybatis整合

SSM整合搭建(二)

    <!-- 配置和mybatis的整合 -->
    <bean id="sqlSessionFactory">
        <!-- 指定mybatis全局配置文件的位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 配置数据源 -->
        <property name="dataSource" ref="pooledDataSource"></property>
        <!-- 指定mybatis的mapper文件的位置 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>

因为我们配置了mapper.xml的文件,但是接口Dao类还没有放入IOC容器中

所以我们需要再将dao放到IOC容器中

SSM整合搭建(二)

<!-- 配置扫描器,将mybatis接口的实现加入到ioc容器中 -->
    <bean>
        <!--扫描所有dao接口的实现 加入到ioc容器中  -->
        <property name="basePackage" value="com.atguigu.crud.dao"></property>
    </bean>

以上就是跟mybatis的整合。

之后我们来进行事务控制的配置  由事务管理器控制住数据源

SSM整合搭建(二)

<!-- 事务控制的配置 -->
    <bean id="transactionManager">
        <!-- 控制住数据源 -->
        <property name="dataSource" ref="pooledDataSource"></property>
    </bean>

之后我们要开始事务,可以基于注解也可以基于xml  将tx 和 aop都勾上

SSM整合搭建(二)

SSM整合搭建(二)

然后编写切入点表达式 ,并且配置事务增强。

并设置不同的请求方法所进行不同的操作。具体看注释

SSM整合搭建(二)

    <!-- 事务控制的配置 -->
    <bean id="transactionManager">
        <!-- 控制住数据源 -->
        <property name="dataSource" ref="pooledDataSource"></property>
    </bean>
    
    <!-- 开启基于注解的事务,使用xml配置形式的事务(必要主要的都是使用配置模式) -->
    <aop:config>
        <!-- 切入点表达式 表示service包下所有的东西都接入事务 并且参数任意多-->
        <aop:pointcut expression="execution(* com.atguigu.crud.service..*(..))" id="txpoint"/>
        <!-- 配置事务增强  -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txpoint"/>
    </aop:config>
    <!-- 配置事务增强,上面的事务切入以后 具体怎么切,需要看这个方法 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 代表切入的所有方法都是事务方法 -->
            <tx:method name="*"/>
            <!-- 以get开始的所有方法 -->        <!-- 每一个get开始的方法都是只读-->
            <tx:method name="get*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

切入点表达式的意思是哪些方法需要进行事务的控制。然后当切入事务以后该怎么做,就看事务增强配置的get还是所有方法所进行的操作了

事务增强和事务的配置式通过transaction-manager进行映射,默认值是transactionManager 如果大家修改了事务控制的配置 记得一定要修改这里 (从尚硅谷那个老师借鉴而来)

之后我们可以来配置Mybatis的基本设置,逆向工程等

Mybatis的很多固定的语句可以在官方文档直接复制使用 https://mybatis.org/mybatis-3/getting-started.html

这一块是在官方文档的Getting Started 进入就可以找到

首先我们先导入mybatis的全局文件,导入了这个才可以开启使用mybatis的语句。

SSM整合搭建(二)

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
 <configuration>
 
 
 </configuration>

然后我们可以在配置文件中setting一些文件

可以设置驼峰命名 便于数据库查出来直接与bean包对应 以及起别名方便使用

SSM整合搭建(二)

<configuration>
     <settings>
         <!-- 驼峰命名 -->
         <setting name="mapUnderscoreToCamelCase" value="true"/>
     </settings>
     <typeAliases>
         <!-- 起别名 -->
         <package name="com.atguigu.crud.bean"/>
     </typeAliases>
 
 </configuration>

然后设置好Mybatis后我们需要去创建表 创建一个emp表和dept表

CREATE TABLE `tbl_dept` (
  `dept_id` int(11) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(255) NOT NULL,
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
CREATE TABLE `tbl_emp` (
  `emp_id` int(11) NOT NULL AUTO_INCREMENT,
  `emp_name` varchar(255) NOT NULL,
  `gender` char(1) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `d_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`emp_id`),
  KEY `fk_emp_dept` (`d_id`),
  CONSTRAINT `fk_emp_dept` FOREIGN KEY (`d_id`) REFERENCES `tbl_dept` (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1006 DEFAULT CHARSET=utf8

SSM整合搭建(二)

SSM整合搭建(二)

并设置1两条数据

当表设置好以后,我们可以通过mybatis的逆向工程来创建对应的bean和对应的dao信息以及mapper信息。 逆向工程的网址: http://mybatis.org/generator/

可以在网址的Quick Start Guide 中进行配置

这里我们需要引入逆向工程的jar包

<!-- 逆向工程jar包  MBG -->
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.5</version>
</dependency>

然后导入后需要建立MGB的xml文件 我们在ssm-crud的目录下建立xml文件 (这里我的名字错了 大家别模仿)

SSM整合搭建(二)

取名为mgb.xml

SSM整合搭建(二)

然后将以下配置的内容都放上去  配置的地址是在

http://mybatis.org/generator/

<?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>
  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
      <property name="useActualColumnNames" value="true"/>
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      <columnOverride column="DATE_FIELD" property="startDate" />
      <ignoreColumn column="FRED" />
      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
    </table>

  </context>
</generatorConfiguration>

SSM整合搭建(二)

首先我们将开头的  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

这一行删除

然后我们需要将数据源的连接替换成我们自己的

SSM整合搭建(二)

然后修改我们的bean包生成的位置

SSM整合搭建(二)

    <!-- 指定javaBean生成的位置 -->
    <!-- targetPackage:生成包的位置 -->
    <!--  targetProject:生成的工程的位置 -->
    <javaModelGenerator targetPackage="com.atguigu.crud.bean" 
    targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

然后需要指定我们的 sql 生成位置的映射

SSM整合搭建(二)

    <!-- 指定sql映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="mapper"  
    targetProject=".\src\main\resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

之后再指定dao接口生成的位置

SSM整合搭建(二)

    <!-- 指定dao接口生成的位置,mapper接口 -->
    <javaClientGenerator type="XMLMAPPER" 
    targetPackage="com.atguigu.crud.dao"  targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

最后的table指定每个表的生成策略。我们替换原内容 表示数据库表和bean的对应

SSM整合搭建(二)

<!-- table指定每个表的生成策略 -->
    <table tableName="tbl_emp" domainObjectName="Employee"></table>
    <table tableName="tbl_dept" domainObjectName="Department"></table>

想要方便的可以直接看这里 复制进去改一改就行

<?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">
      <!-- 配置数据库连接 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/ssm_crud"
        userId="root"
        password="root">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    
    <!-- 指定javaBean生成的位置 -->
    <!-- targetPackage:生成包的位置 -->
    <!--  targetProject:生成的工程的位置 -->
    <javaModelGenerator targetPackage="com.atguigu.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.atguigu.crud.dao"  targetProject=".\src\main\java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <!-- table指定每个表的生成策略 -->
    <table tableName="tbl_emp" domainObjectName="Employee"></table>
    <table tableName="tbl_dept" domainObjectName="Department"></table>
  </context>
</generatorConfiguration>

接下来我们生成就可以了。首先我们在test文件下生成一个MGB的 java 文件

SSM整合搭建(二)

package com.atguigu.crud.test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

public class MGB {
    public static void main(String[] args) throws Exception {
           List<String> warnings = new ArrayList<String>();
           boolean overwrite = true;
           File configFile = new File("mgb.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);
    }
}

主要是将File(“mgb.xml”) 改成刚才设置的文件就ok了  然后我们直接main方法运行

然后刷新一下 就发现东西都有了

SSM整合搭建(二)

OK,第二期就到这里,剩下的内容会尽快上传


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Machine Learning

Machine Learning

Kevin Murphy / The MIT Press / 2012-9-18 / USD 90.00

Today's Web-enabled deluge of electronic data calls for automated methods of data analysis. Machine learning provides these, developing methods that can automatically detect patterns in data and then ......一起来看看 《Machine Learning》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具