一、创建项目
注意事项:
- controller有三个注解 和 一个代理对象 service
@CrossOrigin //跨越那个服务器,就在谁的头上加注解
@RestController //将该类交给Spring容器管理
@RequestMapping //访问 - service接口
- service接口实现类 要加注解
@Service //将这个类交给spring容器管理 - mapper接口
- mapper.xml文件
- yml
二、入门案例 – 查询所有的用户数据
1. 创建项目
2. 编辑pom.xml文件
只需要复制除了坐标以后的
<!--只需要复制 除了坐标之外的文件即可-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.4.1</spring-boot.version>
</properties>
<dependencies>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-core</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
<scope>compile</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<mainClass>com.jt.SpringbootDemo1Application</mainClass>
</configuration>
<!--排除一些指定的配置-->
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
三、框架(和spring爸爸配对食用)
1. 编辑核心代码
1.1 编辑pojo
package com.jt.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
//对应数据库的实体类
@Data // get/set
@Accessors(chain = true) // 链式加载
@AllArgsConstructor //全参构造
@NoArgsConstructor //无参构造
public class User implements Serializable { //实现序列化接口
//对应字段的属性
private Integer id;
private String name;
private Integer age;
private String sex;
}
1.2 编辑mapper层(功能/方法)接口
package com.jt.mapper;
//接口定义方法
import com.jt.pojo.User;
import java.util.List;
public interface UserMapper {
//查询所有的User信息
List<User> findAll();
}
1.3 编辑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="com.jt.mapper.UserMapper">
<select id="findAll" resultType="User">select * from demo_user</select>
</mapper>
1.4 编辑Service层(Spring爸爸分配对象)
- 接口
package com.jt.Service;
import com.jt.pojo.User;
import javax.jws.soap.SOAPBinding;
import java.util.List;
public interface UserService {
//查询User表中所有的数据
List<User> findAall();
}
- 接口实现类
package com.jt.Service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//UserService的实现类
@Service //将该类交给Spring容器管理
public class UserServicelmpl implements UserService{
@Autowired
private UserMapper userMapper; //UserMapper是接口 JDK动态代理对象
@Override
public List<User> findAall() {
/*
User是pojo 调用的是数据库的信息 返回的是User这个类型的集合List
这种方法过于繁琐
*/
return userMapper.findAll();
}
}
- 映射文件
<?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="com.jt.mapper.UserMapper">
<select id="findAll" resultType="com.jt.pojo.User">
select * from demo_user
</select>
</mapper>
1.5 编辑Controller
package com.jt.controller;
import com.jt.Service.UserService;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController //将该类交给Spring容器管理
public class UserController {
@Autowired
private UserService userService;
/*
* 需求:查询全部的user表数据
* 请求类型:get/put/post/delete
* 路径:
* 参数:无
* 返回值:List<User>
* */
@RequestMapping("/getUser")
public List<User> findUser(){
return userService.findAll();
}
}
2. 编辑配置文件
1.CV大法 -----ctrl+c v
2.数据源配置
链接写法:
- serverTimezone=GMT%2B8 指定时区 东八区
- useUnicode=true&characterEncoding=utf8
开启使用Unicode编码,并且指定字符集utf-8 - autoReconnect=true 断线是否重新链接.
- &allowMultiQueries=true 是否允许批量操作
3. 编辑yml文件
server:
port: 8090
# 语法: 1.key:(空格)value结构
# Sping 整合 Mybatis 1.数据源 2.mybatis
# 1.数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
# 2.mybatis
mybatis:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
3. 启动类
@MapperScan(“com.jt.mapper”)//根据包路径扫描,扫描全部的mapper文件
1. 方式一:
2. 方式二:
4.思路
四、Mybatis简化
mybatis提供了增删改查的注解–在接口文件中
注解和xml文件不能同时出现
//举例:
@Select("sql语句")
@Update("update demo_user set name = #{name} ,age = #{age} where id = #{id}")
五、案例
1.请求路径
Controller -> Service -> 通过mapper的接口创建代理对象 —>创建接口和接口实现类 ->有mybatis的xml操作 -> 然后通过传入sql语句 -> 返回值
2. 根据id查询信息
2.1 Get请求的两种写法
// @RequestMapping(value = "findUserById",method = RequestMethod.GET)
@GetMapping("findUserById")
url http://localhost:8080/findById?id=1
3. 要求根据name和age查询用户信息
1.1 Get请求
url http://localhost:8080/findByNA?name=xxx&age=xx
4. 以“xx”为结尾 查询用户信息
1.1 Get请求
url http://localhost:8080/findUserLike?name=“xx”
5. 查询id 1,3,5,6,7用户信息
1.1 Get请求
url http://localhost:8080/findByIds?id=1,3,5,6,7
6. 查询不为空的元素查询数据
1.1 Get请求
动态sql的查询 springmvc怎么接查询
url http://localhost:8080/findUser?id=xx&name=xx&age=xx&sex=xx
url http://localhost:8080/findUser?id=xx&name=xx
7.更新操作
1.1 利用resultFul得结构,根据id修改name&age
resultFul区别就是不用加?
user固定写法
227是id
url http://localhost:8080/user/貂蝉/18/227
解析:貂蝉是name ,18是age,227是id