目标
- mybatis
- spring
- springmvc
mybatis
image.png1、主配置文件叫SqlMapConfig.xml
2、映射文件mapper.xml
3、sqlSessionFactory是生成连接的工厂
4、动态代理的几个特点(usermapper.xml usermapper.java)
1)usermapper.xml的namespace=usermapper.java的完全限定名
2)usermapper.xml的statementid==接口的方法名
3)usermapper.xml的parameterType=接口方法的参数类型
4)usermapper.xml的resultType=接口方法的返回值类型
5).xml与.java文件名前缀相同
5、typeAliases指定别名
第一种 为单个文件指定别名
<typeAliases>
<typeAlias type="com.mybatis.pojo.Emp" alias="user"/>
</typeAliases>
第二种 批量指定别名,为包下的所有类指定别名,别名默认为类名(首字母大写或小写)
<package name="com.mybatis.pojo"/>
6、整包扫描
<mappers>
<package name="com.mybatis.day02.mapper"/>
</mappers>
7、放在接口的常用注解
@Select @Insert @Update @Delete
8、动态sql
<if test="ename!=null and ename!=''">
ename =#{ename}
</if>
<where> :去掉多余的and 或or
<set> :去掉update语句中多余的逗号
<Trim>: 动态添加
prefix-前缀,向前追加什么
suffix-后缀,后面追回什么
suffixOverrides 去掉最后的什么字符
prefixOverrides="" 前面去掉什么
<For each>:主要用在in语句上
collection=list/array
<sql>代码段:sql与include配合使用
<sql id="findsql">
select * from t_user
</sql>
<include refid="findsql"></include>
9、关联映射
一对一:association
一对多:collection
映射<select id="findEmpByEmpNo" parameterType="int" resultMap="empMap">
<resultMap type="emp" id="empMap">
主键字段;; <id column="empno" property="empno"></id>
普通字段:<result column="ename" property="ename"/>
spring
IOC:控制反转
DI:依赖主入
AOP:面向切面编程/面向方面编程
bean:是有唯一id的java类
IOC:控制反转
1、依赖注入的三种方式:属性的set方法 构造方法 接口注入(不支持)
2、bean的作用域 scope的五个值
singleton:单例 prototype:多例 request:请求 session golbalsession
(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。
(2)prototype:为每一个bean请求提供一个实例。
(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。
(5)global-session:全局作用域,global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。
后三个都是web的作用域
3、beanFactory(懒加载,不会在启动时验证xml的正确性)和applicationContext区别
4、加载配置文件方式
ClassPathXmlApplicationContext:加载类路径下的xml配置文件
FileSystemXmlApplicationContext:加载文件系统下的xml配置文件
5、Bean生命周期(了解)
spring AOP
1\Aspect Oriented Programming (面向切面编程)
作用:一次解决一类问题
在不修改原有代码的基础上来扩展程序
2\AOP底层用的是代理
有接口的类:JDK动态代理 无接口的类:CGLIB代理
3、Spring通知有哪些类型?
(1)前置通知(Before advice):
(2)返回后通知(After returning advice):
(3)抛出异常后通知(After throwing advice):
(4)后通知(After (finally) advice):
(5)环绕通知(Around Advice):
4、spring的事务传播行为:
REQUIRED:insert update delete
SUPPORTS: select
① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。
② PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘
springmvc
1、流程
2、配置web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring的配置文件名字.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
3、spring.xml
<tx:annotation-driven/> 注解驱动 注意driven
<context:component-scan base-package="service层实现类所在的包"></context:component-scan>
4、springmvc.xml
<mvc:annotation-driven/> 会自动注册下面的映射器和适配器
(RequestMappingHandlerMapping和RequestMappingHandlerAdapter)
<context:component-scan base-package="controller所在的包"></context:component-scan>
<bean id="jspViewResolver" 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>
</beans>
5、映射地址
@Controller
@RequestMapping("/user")
public class HelloJavaContrller {
@RequestMapping("/add")
public ModelAndView hello(){
System.out.println("请求已到达");
//处理
ModelAndView mv=new ModelAndView("index");
return mv;
}
}
映射地址是类级别的地址+方法级别的:/user/add
method={RequestMethod.POST}
6、controller返回值类型
1)ModelAndView
2)String(普通字符串时为视图名字 转发forward: 重定向redirect:)
3)void (request,response) 类似原始servlet
4)json :body返回
7、参数类型
1)基本类型
2)对象类型
3)包装类
4)集合
5)json:body接
8、json的两种形式
{} 表示json对象 【】 表示json数组
8、Restful:路径接
@PathVariable("name")
9、文件上传
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="1024000"/>
</bean>
1)method=post
2)enctype=multipart/form-data
3)MultiparFile
4)<input type="file">
10、拦截器inteceptor
filter inteceptor aop区别
11、事务
1)声明式事务 编程式事务,我们主要用的是声明式事务
声明式事务配置方式
1)注解方式 @Transational 配合<tx:annotation-driven transaction-manager="txManager"/>
2)配置方式(applicationContext.xml里配置通用事务),应用的是spring aop aspect技术。
2)表达式写法
execution(* com.neuedu.service.impl..(..))
3) 事务传播行为
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。(始终在事务中运行)
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
<!-- get开头的为查询方法 -->
<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
<!-- add开头的为添加方法 -->
<tx:method name="add*" read-only="false" propagation="REQUIRED"/>
<!-- update开头的为修改方法 -->
<tx:method name="update*" read-only="false" propagation="REQUIRED"/>
<!-- delete开头的为删除方法 -->
<tx:method name="delete*" read-only="false" propagation="REQUIRED"/>
注解
Spring部分
1、声明bean的注解
@Component 组件,没有明确的角色
@Service 在业务逻辑层使用(service层)
@Repository 在数据访问层使用(dao层)
@Controller 在展现层使用,控制器的声明(C)
2、注入bean的注解
@Autowired:由Spring提供
@Resource:由JSR-250提供
@Qulifired :一个接口,有多个实现类时用他指定注入哪一个
3、java配置类相关注解
@Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)
@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)
@Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)
@ComponentScan 用于对Component进行扫描,相当于xml中的(类上)
4、切面(AOP)相关注解
Spring支持AspectJ的注解式切面编程。
@Aspect 声明一个切面(类上)
使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
@After 在方法执行之后执行(方法上)
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)
@PointCut 声明切点
在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)
5、@Bean的属性支持
@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean)
其设置类型包括:
Singleton (单例,一个Spring容器中只有一个bean实例,默认模式),
Protetype (每次调用新建一个bean),
Request (web项目中,给每个http request新建一个bean),
Session (web项目中,给每个http session新建一个bean),
GlobalSession(给每一个 global http session新建一个Bean实例)
6、@Value注解(强大的注解)
7、事务相关的
@Transactional
SpringMVC部分
@Controller
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
@GetMapping
@PostMapping
json相关的
@RestContorller(@Controller+@ResponseBody)
@RequestBody 请求是json
@ResponseBody 响应是json
restful请求相关的
@Pathvariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
mybatis
@Select @Insert @Update @Delete
网友评论