SSM框架学习记录6——与git上18年的SSM框架区别

源码下载:
学习总结的SSM框架
18年git上收藏最多的SSM框架

第一次学习的SMM和git上18年的SSM框架的区别


Mybatis配置部分

0.Mybatis的全局配置

<!-- 配置全局属性 -->
	<settings>
		<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
		<setting name="useGeneratedKeys" value="true" />

		<!-- 使用列别名替换列名 默认:true -->
		<setting name="useColumnLabel" value="true" />

		<!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>

1.连接数据库-jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=

1.1. 引入配置文件

<!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:properties/jdbc.properties"/>
    </bean>

2.通过jdbc配置数据源dataSource,此处使用c3p0作为连接池

<!-- 2.数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 配置连接池属性 -->
	<property name="driverClass" value="${jdbc.driver}" />
	<property name="jdbcUrl" value="${jdbc.url}" />
	<property name="user" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />

	<!-- c3p0连接池的私有属性 -->
	<property name="maxPoolSize" value="30" />
	<property name="minPoolSize" value="10" />
	<!-- 关闭连接后不自动commit -->
	<property name="autoCommitOnClose" value="false" />
	<!-- 获取连接超时时间 -->
	<property name="checkoutTimeout" value="10000" />
	<!-- 当获取连接失败重试次数 -->
	<property name="acquireRetryAttempts" value="2" />
</bean>

3.配置事务管理transactionManager

<bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource"/>
</bean>

3.1 配置基于注解的声明式事务

<!-- 配置基于注解的声明式事务 -->
	<tx:annotation-driven transaction-manager="transactionManager" />

4.引用数据源配置sqlsessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <property name="dataSource" ref="dataSource"/>
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"/>
</bean>

Spring配置部分

  1. 配置dao接口包
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.mayousheng.www.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

2.配置(扫描)service包

<!-- 扫描service包下所有使用注解的类型 -->
	<context:component-scan base-package="com.soecode.lyf.service" />

SpringMVC配置部分

1.配置注解驱动

<mvc:annotation-driven />

2.配置视图解析器

 <!-- 3.配置jsp 显示ViewResolver -->
	 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
	 	<property name="prefix" value="/WEB-INF/jsp/" />
	 	<property name="suffix" value=".jsp" />
	 </bean>

3.配置组件扫描

 <!-- 4.扫描web相关的bean -->
	 <context:component-scan base-package="com.soecode.lyf.web" />

源码部分

1.entity,po
对象类,实体类
2.dto,pojo
实体类型的封装,方便进行复杂的业务操作
3.Mapper,或者dao
事务的最小单位,对数据库最基础的操作。
4.service
事务,通过dao对数据库进行操作
5.controller
控制器,用户通过调用controller调用service操作视图
6.exception
异常处理器,进行异常处理

Web部分

1.1img
用来保存图片
2.js
用来保存前端开发需要的依赖
3.jsp
用来保存jsp动态页面
4.web.xml
用来加载Spring容器和前端控制器和拦截器,乱码过滤等
前端控制器

<servlet>
		<servlet-name>mvc-dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 配置springMVC需要加载的配置文件
			spring-dao.xml,spring-service.xml,spring-web.xml
			Mybatis - > spring -> springmvc
		 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/spring-*.xml</param-value>
		</init-param>
	</servlet>

jar部分

mybatis的jar包
Spring的核心jar包
junit单元测试包
slf4j日志jar包
mysql-connector-java数据库连接jar包
c3p0数据库连接池所需jar包

区别

Web部分的区别

第一次学习SSM框架,是单独加载Spring的配置文件

<!--加载spring容器-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!--<param-value>/WEB-INF/applicationContext.xml</param-value>-->
        <param-value>classpath:config/spring/applicationContex*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

18年的SSM,是直接将所有的配置文件加载都放在了前端控制器中。
这两种方法都是可行的,是因为在单独配置Spring容器时还配置了监听器,在加载前端控制器时,同时也会加载单独配置的Spring配置文件。


数据库部分的区别

SSM框架1,没有将数据库表的创建代码放到项目中。
18版的,将表的创建语句单独放到项目中的sql文件夹中,方便开发者用创建数据库,这确实很方便。

-- 创建图书表
CREATE TABLE `book` (
  `book_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '图书ID',
  `name` varchar(100) NOT NULL COMMENT '图书名称',
  `number` int(11) NOT NULL COMMENT '馆藏数量',
  PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='图书表';

-- 初始化图书数据
INSERT INTO `book` (`book_id`, `name`, `number`)
VALUES
	(1000, 'Java程序设计', 10),
	(1001, '数据结构', 10),
	(1002, '设计模式', 10),
	(1003, '编译原理', 10);

源码部分的区别

1.实体类:
实体类部分两框架没有多大变化
2.包装类部分:
之前学习的SSM框架只是进行多个实体间的封装,这种封装形成了更为复杂的实体,是为了满足匹配result返回结果类型,
18年的SSM框架的包装类,封装声明了实体的状态,不仅封装了实体,还封装了实体的状态,这使得这种类型的封装将能实现更复杂的业务
3.dao或者mapper部分
18年SSM,在dao接口类的方法中,形参部分用到了注解

@Param("name") String name

这是之前不常用,这应该是一个要掌握的重点,主要是这种方式有两个好处,
1.对属性定义别名。
2.sql中传参时,可以传入多个参数,而不需要传入一个bean。

4.service类
18年SSM,service的实现类中都使用了注解

@Autowired
private BookDao bookDao;

这在spring容器初始化时,就将service的依赖注入,符合IOC的思想,应该常用。
5.controller类

@Controller
@RequestMapping("/book") // url:/模块/资源/{id}/细分 /seckill/list
public class BookController {

	private Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	private BookService bookService;

	@RequestMapping(value = "/list", method = RequestMethod.GET)
	private String list(Model model) {

完全实现了基于注解的mvc开发方式,果然,基于注解的开发方式才是主流。
6.Exception
异常处理器是每个项目都要配置的,用来处理非系统性异常。
7.enums
相比于第一个SSM项目,18年的这个项目多出一个枚举型的类enums,这个类中实现了一些枚举型数据,方便项目中调用,单独创建一个枚举型字典类,这就是枚举型在项目中的用法了。

resources部分的区别

1.dao或者mapper的对应的xml
没有什么区别,虽然可以逆向工程生成,但是实际开发中都需要自己写。
2.Spring容器相关的配置文件
没有很大区别。
当使用了基于注解的开发,相关的包就需要配置组件扫描

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值