ssm框架的一些笔记

第一章 http://www.springframework.org/schema/
sqlSession的两种使用方式
通过SqlSession实例直接运行映射的sql语句
基于Mapper接口方式操作数据

configuration 配置
properties 可以配置在java 属性配置文件中
settings 修改 MyBatis 在运行时的行为方式
typeAliases 为 java 类型命名一个别名(简称)
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事物管理器
dataSource 数据源
mappers 映射器

typeAliases:
通过package,可以直接指定package的名字,mybatis会自动扫描你指定包下的javabea
并且默认设置一个别名,默认的名字为:javabean的首字母小写的非限定类名来作为它的别名,
<package name="com.dy.entity">
第二章
mapper
namespace的命名必须跟某个接口同名
接口中的方法与映射文件中的SQL语句一一对应
namesqace与sql语句的id组合起来确保唯一

resultType SQL语句返回值类型的完整类名或别名

resultMap 描述数据库结果和对象的对应关系
type 指定类名或者类的别名
id 提供给SQL语句引用
property 对应指定类中的属性名
column 对应数据表中的列名

parameterType 传入SQL语句的参数类型

参数传递
通过注解传递参数,#{}获取参数

1.基础数据类型 指定parameterType = int/string/Date等,通过#{参数名}即可获得传入值

2.复杂数据类型 指定parameterType = User/Provider/Map等,通过#{属性名}或者#{Map的KeyName}即可获得传入值

association mapper.xml中,描述对象的复杂属性(以类作为属性时使用)
collection mapper.xml中,描述对象集合属性(以List Map作为属性时使用)

第三章
动态sql
即在mapper.xml中,通过条件和参数,动态的拼凑sql语句

OGNL表达式
if
<uf test="条件">sql语句</if>
如果test条件为true,则将标签中包含的sql语句拼凑到if外的sql语句中

扫描二维码关注公众号,回复: 1013445 查看本文章

set
<set><if test="参数1不为空">字段1=#{参数1},</if></set>
<set><if test="参数2不为空">字段1=#{参数2},</if></set>
......
用于更新操作,配置if使用可动态改变需要修改的字段
多个字段以逗号隔开,自动忽略最后一个逗号

where
简化sql中where的条件判断
<where> <if test="xxx">sql语句</if> </where>
判断if内是否有返回sql语句,如果有,就插入一个where,
同时会智能删除where子句中多余的and或者or

trim
灵活的去除多余关键字
可代替where和set
prefix 前缀 在trim中sql拼凑完成后,将suffix的内容加到头部
suffix 后缀 在trim中sql拼接完成后,将suffix的内容加到末尾

choose(where,otherwise)
相当于switch-case
多个when条件,满足其中一个就break退出,同时返回when中间拼接的sql语句

foreach
item 循环集合时,每一个元素迭代时的变量名
index 循环的下标,相当于for循环中的i
open 表示以什么开头,在in条件语句中,以(开头
close 表示以什么结尾,在in条件语句中,以)结尾
collections 要循环的集合,可以是list,Map,数组
第六章
构造注入
<constructor-arg>
1.一个<constructor-arg>元素表示构造方法的一个参数
且使用时不区分顺序
2.通过<constructor-arg>
元素的index 属性可以指定改参数的位置索引,位置从0开始.
3.<constructor-arg>元素还提供了type 属性用来指定参数的类型
避免字符串和基本数据类型的混淆

aop增强
<aop:Before>:前置增强 在方法调用之前调用通知
<aop:After-returning>:后置增强 在方法完成之后调用通知,无论方法执行成功与否
<aop:After>:最终增强 在方法执行成功之后调用通知
<aop:After-throwing>:增强异常处理 在方法抛出异常后进行通知
<aop:Around>:环绕增强 通知包裹了被通知的方法
在被通知的方法调用之前和调用之后执行自定义的行为

注解实现Ioc
@Component: 实现Bean组件的定义
@Repository:用于标注Dao类
@Service:用于标注业务类
@Controller:用与标注控制器类

使用注解时,需要在applicationContext.xml中添加
<context:component-scan base-package="注解的类所属包的完整路径"/>
添加后:指定包(package)下面的所有注解才会生效

注解实现aop
常用注解有
@Aspect @Before @AfterReturning @Around @AfterThrowing @After等
在applicationContext.xml配置文件中添加<aop:aspectj-autoproxy/>
以上注解才会生效
第七章
在Spring中使用MyBatis,需要在Spring的配置文件中定义一些类
SqlSessionFactoryBean 为整合应用提供SqlSession对象资源
SqlSessionTemplate 负责管理MyBatis的SqlSession,调用SQL映射语句,
实现对数据库的访问
MapperFactoryBean 根据指定Mapper接口生成Bean实例
MapperScannerConfigurer 根据指定包批量扫描Mapper接口并生成实例

Spring和MyBatis的整合步骤
1.建立wed项目,加入Spring(各种jar)
2.建立开发目录结构,创建实例类(po/entity)
3.创建数据访问接口(dao)
4.创建接口实现类(daoImpl)
5.配置SQL映射文件(mapper.xml)
6.配置mybatis应用配置文件
7.配置Spring应用配置文件(applicationContext.xml)

声明式事物配置步骤
1.导入tx和aop命名空间
2.定义事物管理器Bean,并为其注入数据源Bean
<bean id="txMangger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
3.通过<tx:advice>配置事务增强,绑定事务管理器并针对不通方法定义事物规则
4.配置切面,将事物增强与方法切入点组合

添加对注解配置的事务的支持
1.使用<tx.annotation-driven transaction-manager="txManager">
2.使用@Transactional为方法添加事务支持

Spring事务传播机制和数据库隔离级别
https://blog.csdn.net/willfcareer/article/details/5695530
propagation:事务传播机制
REQUIRED(默认值)
REQUIRES_NEW MANDATORY NESTED
SUPPORTS
NOT_SUPPORTED NEVER

isolation:事物隔离等级
DEFAULT(默认值)
READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZABLE

猜你喜欢

转载自www.cnblogs.com/whyshi1995/p/9085105.html