三大框架整合SSM---案例

三大框架整合—案例

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、测试,向数据库添加数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16、总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AimerDaniil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值