Spring爸爸干了啥的案列

一、创建项目

注意事项:

  1. controller有三个注解 和 一个代理对象 service
    @CrossOrigin //跨越那个服务器,就在谁的头上加注解
    @RestController //将该类交给Spring容器管理
    @RequestMapping //访问
  2. service接口
  3. service接口实现类 要加注解
    @Service //将这个类交给spring容器管理
  4. mapper接口
  5. mapper.xml文件
  6. 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的映射文件
  1. 核心配置文件
    在这里插入图片描述
<?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爸爸分配对象)
  1. 接口
    在这里插入图片描述
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();
}
  1. 接口实现类
    在这里插入图片描述
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();
    }
}
  1. 映射文件

在这里插入图片描述

<?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.数据源配置

链接写法:

  1. serverTimezone=GMT%2B8 指定时区 东八区
  2. useUnicode=true&characterEncoding=utf8
    开启使用Unicode编码,并且指定字符集utf-8
  3. autoReconnect=true 断线是否重新链接.
  4. &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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值