SSM框架整合(基于SpringBoot)

x33g5p2x  于2021-09-28 转载在 Spring  
字(4.5k)|赞(0)|评价(0)|浏览(289)

参数取值

形参实参,参数传递的是值,与名字无关

只有一个数据,按下标取值,名字任意(但是要注意开发规范)

代理对象

常见代理方式

1.JDK动态代理

JDK默认提供

要求被代理者必须实现(有)接口,代理对象是目标对象的实现类/兄弟元素

2.CGLIB动态代理

没有接口也可以创建代理对象,代理对象是目标对象的子类(继承)

需要手动导入jar包

spring自身添加cglib的依赖

Mapper接口说明

获取的mapper接口对象并不是接口的对象,因为接口不能实例化,所以此对象是JDK动态代理生成的代理对象!!

**

**

说明是JDK生成的代理对象↑

三大框架整合

 1.Spring框架

将复杂的第三方框架整合,使程序→控制调用浑然一体,以一种统一的方式调用

核心:

IOC-DI   

IOC:控制反转,无需自己创建对象,把创建对象的权力交给Spring容器管理,由Spring容器管理对象的生命周期

DI:依赖注入,创建对象时,如果该对象中有需要依赖的属性,Spring为依赖的属性赋值

IOC-DI相辅相成

AOP

面向切面编程

2.SpringMVC

接收请求,处理请求,返回响应

3.框架之间的调用关系

4.项目整合

创建项目

编辑pom.xml文件

编辑核心代码

pojo

package com.jt.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;

@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

mapper接口

package com.jt.mapper;

public interface UserMapper {
    List<User> findAll();
}

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是mybaits映射文件的唯一标识,与接口对应
namespace:指定需要绑定的接口名称  不可重复-->
<mapper namespace="com.jt.mapper.UserMapper">
   
    <select id="findAll" resultType="com.jt.pojo.User">
        select * from demo_user
    </select>
</mapper>

编辑Service接口

package com.jt.service;

import com.jt.pojo.User;

import java.util.List;

public interface UserService {
    List<User> findAll();
}

实现类

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;
@Service/*将该类交给spring容器管理*/
public class UserServiceImpl implements UserService{
    @Autowired
    UserMapper userMapper;
    @Override
    public List<User> findAll() {

        return userMapper.findAll();
    }
}

编辑Conrtroller层

package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
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/*=@Controller(将类交给spring容器管理)+@ResponseBody(→JSON)*/
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/getUser")
    public List<User> findUser(){
        return userService.findAll();
    }

}

核心配置信息配置 application.yml

#语法: 1.key:(空格)value结构
server:
  port: 8090

#整合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

#SpringBoot整合mybatis
mybatis:
  #指定别名包
  type-aliases-package: com.jt.pojo
  #加载指定的xml映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

Spring管理Mapper接口

@Mapper注解,位置为

package com.jt.mapper;

import com.jt.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
//将此接口交给spring容器管理
@Mapper
public interface UserMapper {
    List<User> findAll();
}

此方法可以优化,使用@MapperScan,位置是启动类上

@SpringBootApplication
@MapperScan("com.jt.mapper")/*根据包扫描路径 扫描全部的mapper*/
public class SpringbootSsmApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootSsmApplication.class, args);
    }

}

Get方法实现参数传递

1.查询id=1的用户数据

controller层代码

package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController/*=@Controller(将类交给spring容器管理)+@ResponseBody(→JSON)*/
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/getUser")
    public List<User> findUser(){
        return userService.findAll();
    }
    @GetMapping("findUserById")
    public User findUserById(Integer id){
        return userService.findUserById(id);
    }

}

service

User findUserById(Integer id);

impl实现方法

@Override
    public User findUserById(Integer id) {
        return userMapper.findUserById(id);
    }

mapper层

User findUserById(Integer id);

映射文件

<select id="findUserById" resultType="User">
        select * from demo_user where id=#{id}
    </select>

查询:http://localhost:8090/findUserById?id=1

  1. 根据name与age查询用户信息

url:..../findUserByNA

3.查询名称以”XXX“结尾的数据

相关文章