二阶段SSM框架
项目结构
SpringMVC
@RestController @RequestMapping
@RestController//接收请求,让浏览器访问到,返回响应JSON串
@RequestMapping("car")//规定浏览器访问这个类的方式
public class CarController {
@RequestMapping("get")//规定浏览器访问这个方法的方式
public Car get() {
Car car = new Car();
car.setId(718);
car.setName("保时捷");
car.setType("Cayman T");
car.setColor("五彩斑斓的黑");
car.setPrice(641000.0);
return car;
}
}
Spring
IOC 控制反转 @Component @Service @Controller
IOC 控制反转
让spring来帮你管理对象 帮你new
那个类想让Spring框架new,就在那个类上使用
@Component @Service @Controller 一样的功能不过是加在不同类标识
package cn.tedu.spring2;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
@Component//让框架认识这个类
//@Service
//@Controller
//Map<类名字首字母小写,类对象>-{user ,new user()}
public class User {
public void get(){
System.out.println("hello springIOC");
}
}
DI 自动装配/依赖注入/自动布线 @Autowired@Qualifier(value ="???")
@Qualifier(value =“HelloService”) HelloService接口有两个实现类HelloServiceA、HelloServiceB,当使用@Autowired,就不知道注入哪一个,需要使用@Qualifier(value ="???")使用名称注入
实现DI之前必须先实现自动装配IOC
Student类中注入Teacher类
Student类
package cn.tedu.pojo2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Student {
String name = "学生";
@Autowired//DI依赖注入---自动装配---自动布线
Teacher t;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", t=" + t +
'}';
}
}
Teacher类
package cn.tedu.pojo2;
import org.springframework.stereotype.Component;
@Component//ioc
public class Teacher {
String name = "老师";
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
'}';
}
}
Mybatis
导入Mybatis依赖 、数据库驱动、jdbc依赖
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!--引入数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--jdbc依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
核心配置文件 application.yml
#SpringBoot配置mysql信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///mybatisdb?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: root
#SpringBoot整合Mybatis配置
mybatis:
#指定UserMapper.xml文件的位置
mapper-locations: classpath:*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
#控制台打印sql语句
logging:
level:
cn.tedu.dao: debug
Mapper文件 CarMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 对应类的dao层-->
<mapper namespace="cn.tedu.dao.CarDao">
<!-- resultType="返回值的类"-->
<select id="get" resultType="cn.tedu.pojo.Car">
select * from car
</select>
<insert id="add" >
insert into car values (null,#{name},#{color},#{price})
</insert>
</mapper>
接口CarDao
package cn.tedu.dao;
import cn.tedu.pojo.Car;
import java.util.List;
public interface CarDao {
List<Car> get();
void add(Car car);
}
注解解决跨域问题
@CrossOrigin
@CrossOrigin(“http://www.baidu.com”)//只允许该域名访问