Spring Boot笔记
- @Controller/@Service/@Repository 都是有 @Component 组成的。@Component的作用是自动扫描当前文件。
- @PostConstruct 在此注解下的方法会在构造器(构造方法)后进行调用,一般用在init方法前,作用是初始化。
- @PreDestroy 在此注解下的方法会在销毁对象前进行调用,在销毁对象前销毁某些资源
- Bean是单例的,仅实例化一次,在整个容器中同一个Bean只有一次
- @Autowired 依赖注入 ,在此注解下,Spring会自动将bean注入到当前的类中。
@Autowired
private UserService userService; //此处将UserService这个类注入到当前userService属性中
- @RepuestMapping("/xxx")表示浏览器访问的路径,一般情况下浏览器会认为Sping传过来的是个网页,而当你要返回的是字符串时需要加上@ResposeBody
- Sping Ioc是一种面向对象编程的设计思想;依赖注入是Ioc思想的实现方式;Ioc Container (Ioc容器)是实现依赖注入的关键,本质上是一个工厂
SpringMVC
- 服务端采用三层架构:表现层、业务层、数据访问层。但要主要,这里的三层架构是服务端的结构,并不是我们常说的MVC(Model、Controller、View)。MVC主要解决的是表现层的问题。
- MVC的工作模式:首先客户端将请求发送到Controller中,Controller将请求发送到业务层进行处理,然后将处理得到的数据封装到Model中,随后传给视图层(View)。最后视图层拿到数据后生成一个HTML发送回客户端。
- SpringMVC核心组件:前端控制器 DispatcherServlet, 作为Controller、View、客户端的中间层在三者之间传递信息。、
- @RequestMapping可以定义 访问的路径 以及 发送请求的方式(GET/POST/PUT/DELETE) 比如
@RequestMapping(value = "/api/user/findall" , method = RequestMethod.GET)
- @RequestParam(name = “xxx”, required = false)将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
// /text?current=1&limit=20
@RequestMapping(value = "/text" , method = RequestMethod.GET)
@ResponseBody
public String getTexting(
//@RequestParam可读取来自浏览器地址栏传输的数据
//required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
@RequestParam(name = "current", required = false, defaultValue = "1") int current,
@RequestParam(name = "limit", required = false, defaultValue = "30") int limit){
System.out.println(current);
System.out.println(limit);
return "这是一个测试用例,测试@RequestParam的作用";
}
- @PathVariable(“name”) String name 与@RequestParam同为传参方式, 相对来说这种传参更加简单,目前使用较多的也是这种,下面给一个例子。
@RequestMapping(value = "/api/user/deletebyid/{id}" , method = RequestMethod.DELETE)
public void deleteUserById(@PathVariable("id") int id){
userService.deleteUserById(id);
}
- POST请求的表单提交非常简单,首先,你的form表单内的action必须填相应的url,提交表单到后台则method为POST请求
<form class="user" action="/dologin" method="post">
<input type="email" name="email">
<input type="password" name="password">
</form>
随后只需要在dologin方法的传入参数中对应input的name即可取出数据,简单好用
@RequestMapping(value = "/dologin" , method = RequestMethod.POST)
@ResponseBody
//在方法的传入参数处,对应form表单中的名字即可取出对应数据
public String login(String email, String password){
System.out.println(email);
System.out.println(password);
return "成功登录";
}
- 那么有没有一种方法携带着用户提交的页面然后跳转到另一个页面呢? 当然,ModelAndView,字如其名,该对象包含Model和View,可以将传入的参数加入到model中,随后设置view 的name就可以携带数据跳转了
@RequestMapping(value = "/dologin" , method = RequestMethod.POST)
public ModelAndView login(String email, String password){//传入email、password
ModelAndView mav = new ModelAndView();
mav.addObject("email", email);//将email、password加入到model中
mav.addObject("password", password);
mav.setViewName("index");//将view设置为首页
return mav;
}
还有一种较为简洁的方式,日常开发可能下面这种方式用的更多
@RequestMapping(value = "/dologin" , method = RequestMethod.POST)
public String login(Model model, String email, String password){//传入email、password
model.addObject("email", email);//将email、password加入到model中
model.addObject("password", password);
return "index";
}
Mybatis 笔记
- 一个xml文件需要与一个mapper一一对应,用xml文件中的
<mapper namespace="com.xxx.xxx.xxxmapper">
同时在mapper文件中也要用注解标明 @Repository @Mapper。
- mapper接口中使用的方法名字也需要与xml中的 id 对应
- 注意resultmap的创建,在 select 中要填入parameterType 和 resultMap。
<select id="findAllUser" parameterType="User" resultMap="UserResultMap">
字段类型一般为实体类型,resultMap是自己创建的。