SpringBoot实践(二)——项目搭建(SSM基础)

SpringBoot实践(二)——项目搭建(SSM基础)

前言

上一篇笔记中记录了搭建SpringBoot的基本操作,本篇笔记记录SpringBoot整合SSM的相关基本操作,因为是实践笔记,所以依旧保证上一篇笔记的风格:理论概念解释说明尽量在注释里,总结中会有相关理论总结以及实践时候的注意事项。

SpringBoot整合SSM

步骤

  • 创建项目:为了快速可以直接使用Spring快速生成工具来创建SpringBoot项目;
  • 引入相关依赖:
		<!--SpringMVC-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>
        <!--mysql连接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--druid数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
  • 书写配置文件:
server:
  # 启动端口号
  port: 8081
  servlet:
    # 项目启动名
    context-path: /springboot-ssm
spring:
  datasource:
    # 数据库连接驱动配置
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 数据库连接池类型
    type: com.alibaba.druid.pool.DruidDataSource
    # 数据库账户名
    username: root
    # 数据库账户密码
    password: 123456
    # 数据库名及连接参数相关配置
    url: jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf-8
  • 建立各层包:

在这里插入图片描述

在这里插入图片描述

【注】:第一张图中是基础的包路径配置结构,第二章是MyBatis映射文件的路径。要注意,MyBatis的接口路径和MyBatis的映射文件的路径必须同一层;映射文件一般放在resources中,在这里并没有new package操作,我们需要通过new directory 操作来生成目录,其中级联生成文件的路径名应该类似:com/xxx/mapper,这一点尤为重要,否则会出问题。

  • 定义实体,书写mapper接口:

在entity和mapper中定义和数据库表中对应的字段的实体类以及实体类对应的mapper接口。

  • 生成MyBatis接口文件以及映射文件:File -> Editor -> File and Code Templates,然后点击 + 就可以自定义文件模板了,MyBatis模板在下面,自行配置。

在这里插入图片描述

<?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="${NAMESPACE}" >
</mapper>

配置完成后就可以在新建下拉栏中找到我们自定的文件模板。

在这里插入图片描述

  • 入口类中添加Mybatis接口扫描注释
@SpringBootApplication
// 该注释帮助扫描mapper接口
@MapperScan("com.xxx.mapper")
public class Springboot22115Application {
    public static void main(String[] args) {
        SpringApplication.run(Springboot22115Application.class, args);
    }
}
  • 将SSM中各层的类都准备完:

    entity:

// 实体类实现的Serializable 接口是一种标记接口,它的作用是将数据库中查询到的数据注入到该类实现的对象中
@Component
public class Student implements Serializable{
    private String sid;
    private String sname;
    private Integer sage;
    private String tid;
    
    public Student() {
    }

    public Student(String sid, String sname, Integer sage, String tid) {
        this.sid = sid;
        this.sname = sname;
        this.sage = sage;
        this.tid = tid;
    }

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Integer getSage() {
        return sage;
    }

    public void setSage(Integer sage) {
        this.sage = sage;
    }

    public String getTid() {
        return tid;
    }

    public void setTid(String tid) {
        this.tid = tid;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid='" + sid + '\'' +
                ", sname='" + sname + '\'' +
                ", sage=" + sage +
                ", tid='" + tid + '\'' +
                '}';
    }
}

​ controller:

@RestController
public class TestStudent {
    @Autowired
//  按照容器中的对象名来注入
    @Qualifier(value = "testServiceImpl")
    private TestService testService;

//  官方推荐用法
//    @Autowired
//    public TestStudent(TestService testService) {
//        this.testService = testService;
//    }
    @RequestMapping("showAll")
    public String showAll(){
        List<Student> studentList = testService.showAll();
        studentList.forEach(student-> System.out.println(student));
        return "success";
    }
}

​ service:

// 新建Service接口
public interface TestService {
    List<Student> showAll();
}

// 新建Service实体类实现接口
@Service
public class TestServiceImpl implements TestService {
    private TestMapper testMapper;
    @Autowired
    public TestServiceImpl(TestMapper testMapper) {
        this.testMapper = testMapper;
    }

    @Override
    public List<Student> showAll() {
        return testMapper.selectAll();
    }
}

​ mapper:

public interface TestMapper {
    public List<Student> selectAll();
}

​ mapper.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.lee.mapper.TestMapper">
    <select id="selectAll" resultType="com.lee.entity.Student">
        select * from `student`
        limit 0,10
    </select>
</mapper>

到这里我们可以试一试我们的项目能否启动成功了,注意实体类和成员变量与自己的是否对应。

总结

  • 如果引入了MySQL的依赖,则必须在配置文件中书写数据库连接参数,否则会报错;
  • 现今MySQL连接驱动官方推荐使用com.mysql.cj.jdbc.Driver,用以前的也不会报错;
  • 使用MyBatis一定要在入口类上添加MapperScan(“com.xxx.mapper”)
  • MyBatis接口文件和MyBatis映射文件一定要在同一个文件目录下,且resources下新建目录需要用/来分割;
  • Service接口层不要@Service,该注解要加载实际实现功能的Service实现类;
  • Serializable接口是一种标记接口,标记接口是不存在任何执行代码的接口,他的作用暂时按照注释中记录的功能来说,等到后面说明JVM底层原理的时候会对这一类型问题进行相关说明。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值