SSM整合搭建(二)
本页来衔接上一页继续来搭建SSM,再提一下大家如果不详细可以再去看视频哦,B站就有
之后我们来配置SpringMVC的配置文件,主要是配置跳转的逻辑
先扫描所有的业务逻辑组件
我们要用SpringMVC去扫描包 那么就应该先去建立包
我们给SpringMVC设置扫描仅仅是Controller的包 并且禁止默认
<!-- 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>
之后我们再配置视图解析器,设置前缀与后缀,告知跳转的路径
<!-- 配置视图解析器,方便页面返回 --> <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 这样就能让动态静态资源都返回成功
第二个是能使用Springmvc的一些高级功能
<!-- 设置两个标准配置 --> <!-- 将SpringMVC不能处理的请求交给tomcat 这样就能让动态静态资源都能返回成功 --> <mvc:default-servlet-handler/> <!-- 能支持springmvc更高级的一些功能,JSR303校验 快捷的ajax请求等等 --> <mvc:annotation-driven/>
接下来就是来配置Spring的配置文件
首先先配置数据源
因为这些数据都不是写死的 我们需要新建一个properties存储数据
在resources下创建一个dbconfig 存储配置数据
这是我的配置 为了不跟别的混乱 我们跟这个数据库有关的都加上jdbc前缀
写好之后我们需要外部引入dbconfig。这时候就需要context标签
然后我们就将dbconfig引入并填充到之前的数据源中
<!--Spring的配置文件,这里主要配置和业务逻辑有关的 --> <!--数据源 事务控制等核心 --> <context:property-placeholder location="classpath:dbconfig.properties"/> <!-- 配置数据源 --> <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <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的就行
<context:component-scan base-package="com.atguigu"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
配置好数据源后 我们需要开始配置和mybatis的整合
<!-- 配置和mybatis的整合 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定mybatis全局配置文件的位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean>
所以我们也先创建mybatis的配置文件 在resources建立 mybatis-config.xml 图片有点糊
配置文件的内容以后再填充
之后还需要导入数据源和引用mapper.xml的文件 所以我们先创建一个mapper的文件夹 在resources下
这就是完整的和mybatis整合
<!-- 配置和mybatis的整合 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定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容器中
<!-- 配置扫描器,将mybatis接口的实现加入到ioc容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--扫描所有dao接口的实现 加入到ioc容器中 --> <property name="basePackage" value="com.atguigu.crud.dao"></property> </bean>
以上就是跟mybatis的整合。
之后我们来进行事务控制的配置 由事务管理器控制住数据源
<!-- 事务控制的配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 控制住数据源 --> <property name="dataSource" ref="pooledDataSource"></property> </bean>
之后我们要开始事务,可以基于注解也可以基于xml 将tx 和 aop都勾上
然后编写切入点表达式 ,并且配置事务增强。
并设置不同的请求方法所进行不同的操作。具体看注释
<!-- 事务控制的配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 控制住数据源 --> <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的语句。
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
然后我们可以在配置文件中setting一些文件
可以设置驼峰命名 便于数据库查出来直接与bean包对应 以及起别名方便使用
<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
并设置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文件 (这里我的名字错了 大家别模仿)
取名为mgb.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> <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>
首先我们将开头的 <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />
这一行删除
然后我们需要将数据源的连接替换成我们自己的
然后修改我们的bean包生成的位置
<!-- 指定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生成位置的映射
<!-- 指定sql映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator>
之后再指定dao接口生成的位置
<!-- 指定dao接口生成的位置,mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.crud.dao" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator>
最后的table指定每个表的生成策略。我们替换原内容 表示数据库表和bean的对应
<!-- 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文件
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方法运行
然后刷新一下 就发现东西都有了
OK,第二期就到这里,剩下的内容会尽快上传
SSM整合搭建(二)的更多相关文章
- SSM整合学习 二
二:与Spring MVC整合 一:添加Spring MVC Framework 右键项目名称,点击Add Framework Support 选择Spring-Spring MVC框架 选择Down ...
- SSM整合搭建过程中的一个怪异问题
好久没有搭建框架了,昨天开始试图搭建一个SSM框架,各种配置文件搭建成功,服务器也启动正确,但是在运行过程中,发现总是不能获取JDBC,不能够创建连接池工厂,报错如下:网页报500错误码 SEVERE ...
- SSM框架——整合搭建流程
1.首先创建maven工程,使用哪种方式进行创建都可以,可以参考博主之前的文章: <两种方式创建Maven项目[方式二]><两种方式创建Maven项目[方式一]> 2.先看看搭 ...
- 在Eclipse中利用maven整合搭建ssm框架
首先说明用到的框架: spring + springMVC + mybatis 构建工具:maven 开发工具:eclipse 开发环境:win10 java版本:jdk1.8 ...
- SSM整合之---环境搭建
SSM整合---环境搭建 l 查询所有用户的信息,保存用户信息 1.pom.xml配置项目所需的jar包 <dependencies> <dependency> <gr ...
- 【环境搭建】SSM 整合使用
SSM 整合使用 文章源码 搭建整合环境 整合说明 SSM 整合可以使用多种方式,但是选择 XML + 注解 的方式最为合适. 整合思路 搭建整合环境 Spring 环境搭建并测试 Spring 整合 ...
- SSM整合_年轻人的第一个增删改查_基础环境搭建
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- SSM(SpringMVC Spring Mybatis)框架整合搭建
1.新建一个web工程. 2.首先看一下整体的框架结构: 3.将ssm框架搭建所需要的jar包复制到lib目录下 3.需要配置各个配置文件. 1)配置web.xml文件: <?xml versi ...
- ssm 整合(方案二 maven)
通过maven来整合ssm方便很多,至少不用去找jar包 具体架构如下: 1.配置pom.xml <project xmlns="http://maven.apache.org/POM ...
随机推荐
- signals function|KNN|SVM|average linkage|Complete linkage|single linkage
生物医疗大数据 存在系统误差使得估计量有偏,如下图红色和蓝色图形,存在随机误差使得估计量并不是同一个值,如图中除去期望之外的曲线值,为了控制随机抽样造成的误差,可以使用p-value决定是否服从假设检 ...
- <JZOJ5910>duliu
愤怒 考场想到正解 然后觉得我的“正解”和正解差不多 一样的效果 被忽略的与正解的不同也想到了 然而 我懒得再写 于是快乐10分 气坏了 #include<cstdio> #include ...
- 吴裕雄--天生自然 R语言开发学习:高级编程
运行的条件是一元逻辑向量(TRUE或FALSE)并且不能有缺失(NA).else部分是可选的.如果 仅有一个语句,花括号也是可以省略的. 下面的代码片段是一个例子: plot(x, y) } else ...
- [转]<版本一>写代码的小女孩
天冷极了,下着雪,又快黑了.这是NOIP的前夜.在这又冷又黑的晚上,一个衣衫破烂的小女孩在机房敲着代码.她从班里逃出来的时候还拿着一本算导,但是有什么用呢?那是一本很破旧的书——那么大,一向是她妈妈垫 ...
- Redis4配置文件详解
转载链接https://www.cnblogs.com/jeffen/p/6077661.html 守护进程模式 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 ...
- SpringMVC之添加照片并修改照片名字
@RequestMapping(value="/addIdcardsSubmit",method={RequestMethod.POST,RequestMethod.GET}) p ...
- 本地开启https服务
### ##自签名证书 ##配置Apache服务器SSL ##自己作为CA签发证书 ###这里是OpenSSL和HTTPS的介绍 OpenSSL HTTPS 开启HTTPS配置前提是已在Mac上搭建A ...
- Coding Interviews 20 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路 We need another data structure to sotre ...
- FBI今年最重要的任务:招募黑客
当FBI(联邦调查局)一次又一次被爆出丑闻的时候,面临着一个又一个的尴尬局面.在这样的情况下,FBI发现了自己的一个巨大问题,那就是以前都依靠隐秘行动和人员的保密性来保证国家的安全,现在必须依靠更 ...
- C++扬帆远航——8(张三李四,等差数列)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:qiudengcha数列.cpp * 作者:常轩 * 完成日期: ...