三大框架整合—案例
SSM
S:springmvc
S:spring
M:mybatis
1、项目结构
2、准备表和记录
CREATE TABLE `car` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`color` varchar(20) default NULL,
`price` double default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、创建前端网页
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 框架整合</title>
</head>
<body>
<a href="http://localhost:8080/car/get">点我提交请求</a>
</body>
</html>
4、修改pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cgb2105sboot01</artifactId>
<groupId>cn.tedu</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>SSM01</artifactId>
<dependencies>
<!--lombok依赖包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--jdbc依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
5、创建启动类,RunApp.java
package cn.tedu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
@SpringBootApplication
@Controller
@MapperScan("cn.tedu.dao")
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
6、创建配置文件,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
7、创建Car类,Car.java
package cn.tedu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.stereotype.Component;
//用来完成ORM(数据库与java交互),也是model层,用来封装数据
@Data //提供get、set、toString等方法
@NoArgsConstructor //提供无参构造
@AllArgsConstructor //提供全参构造
@Accessors(chain = true) //提供链式编程
@Component //提供ioc
public class Car {
private Integer id;
private String name;
private String color;
private Double price;
}
8、创建数据库mybatis接口CarDao
package cn.tedu.dao;
import cn.tedu.pojo.Car;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.List;
@Component //接口不能加ioc,不能new对象,建议不加,忽略效验
public interface CarDao {
List<Car> get(); //获取全部数据
void add(Car C); //添加数据
}
9、创建映射文件,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">
<mapper namespace="cn.tedu.dao.CarDao">
<!--
select标签表示要发起查询的SQL,
id是SQL语句的唯一标识,
resultType用来完成ORM,把表里的字段值 自动映射 类里的属性
-->
<!---静态查询dept表中所有的信息-->
<!--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>
10、创建CarService 接口
package cn.tedu.service;
import cn.tedu.pojo.Car;
import java.util.List;
public interface CarService {
List<Car> get(); //获取所有数据
void add(Car C); //添加数据
}
11、创建CarServiceImpl实现类
package cn.tedu.service;
import cn.tedu.dao.CarDao;
import cn.tedu.pojo.Car;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import sun.reflect.generics.tree.VoidDescriptor;
import java.util.List;
@Service //IOC---new对象
public class CarServicelmpl implements CarService{
@Autowired //DI,描述两个类之间的关系,使用对象
private CarDao dao;
//获取所有数据
@Override
public List<Car> get() {
return dao.get();
}
//新增加数据
@Override
public void add(Car c) {
dao.add(c);
}
}
12、创建CarController 类
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import cn.tedu.service.CarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sun.reflect.generics.tree.VoidDescriptor;
import java.util.List;
@RestController //接受请求
@RequestMapping("car") //指定访问方式
public class CarController {
@Autowired//di,依赖注入
private CarService carservice;
@RequestMapping("get")
public List<Car> get(){
//直接使用server的功能
return carservice.get();
}
@RequestMapping("add")
public void add(Car c){
System.out.println(c);
//直接使用server的功能
carservice.add(c);
}
}
13、修改启动类,添加包扫描
@MapperScan("cn.tedu.dao")
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
或者
import org.mybatis.spring.annotation.MapperScan;
import java.util.List;
@MapperScan
public interface DeptDao {
/**
* 获取所有
* @return 所有部门信息
*/
List<Dept> getAll();
/**
* 根据名称获取部门信息
* @return 相关名字的部门信息
*/
List<Dept> getName(String name);
List<Dept> getByIds(int[] id);
void delId1(int[] id);
}
14、测试,获取数据库信息
15、测试,向数据库添加数据