SSM复习要点
Spring
Spring是一个管理Bean的容器
三个重要概念:IOC,DI,AOP
bean标签的作用及特点
这个对象在Spring容器加载时即创建该对象
默认是单例的,可以修改scope属性修改为非单例
scope="prototype"
class是必须指定的,id不是
Autowired注解的作用
可以注入一个对象,默认是按照类型匹配,所以要求实现类只能有一个,如果有多个需要使用@Qulifier
public class GuanYu{
@Autowired
@Qulifier("test2") // 指定test2作为装配对象
private Weapon weapon;
}
@Component("test1")
public class QingLong implements Weapon {
private int dps;
public void setDps(int dps) {
this.dps = dps;
}
public int getDps() {
return dps;
}
public void showInfo() {
System.out.println("青龙偃月,攻击力很高");
}
}
@Component("test2")
public class Fang implements Weapon {
private int dps;
public void setDps(int dps) {
this.dps = dps;
}
public int getDps() {
return dps;
}
public void showInfo() {
System.out.println("方天画戟,攻击力很高");
}
}
依赖注入DI的方式有几种
- 接口注入(Spring不支持)
AOP面向切面编程
其中使用了代理模式
提供了一些注解,如@Before,@Around,@AfterThrowing等
Mybatis
mybatis是一个持久层框架
别名设置
log4j日志,默认的输出级别是DEBUG
表与表之间的关系
- 一对一
- 多对一
- 多对多
在mapper文件中,常见的标签select,insert,where,if,set,update,delete,sql,include等,没有group标签
/*
keyProperty="empno" 主键列
mysql order=before oracle order=after
*/
insert into emp(empno,ename,deptno,job) values(#{empno},#{ename},#{deptno},#{job})
mapper文件中namespace对应接口
mapper文件中#{}和${}的区别
- #{}会被解析成?,然后使用数据绑定,${}是直接把数据拼在SQL中
- #{}有单引号,${}没有
mapper文件中resultType和resultMap的区别
-
resultType表示SQL的返回值类型,会把查询结果直接绑定在该类型的同名属性上
public class Emp{ private int empno; private double sal; ... }
-
resultMap表示SQL返回的map映射,需要一一设置对应属性
public class Emp{ private int a; private double b; }
SpringMVC
SpringMVC中有个负责处理HTTP请求和响应的DispatcherServlet,它叫中央控制器(前端控制器),在web中配置映射
springDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springDispatcherServlet
/
SpringMVC处理器方法需要返回数据需要添加注解:@ResponseBody
SpringMVC中,ModelAndView可以保存数据并完成转发,但不能获取数据
@RequestMapping({"/user/add","/user/insert"})映射多个请求
参数绑定时不能直接绑定java.util.Date类型
处理器方法是用String类型作为返回值,使用forward
进行转发,使用redirect
进行重定向
RESTFUL风格的URL如何获取参数
@Controller
public class TestController{
@RequestMapping("/user/{id}")
public void getInfo(@PathVariable("id") int uid){
}
}