美文网首页Spring Boot 核心技术
SpringBoot学习总结二之SpringBoot整合myBa

SpringBoot学习总结二之SpringBoot整合myBa

作者: 一只流浪的小码农 | 来源:发表于2019-03-12 10:47 被阅读0次

前言

通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数据,那么我们接下来就是要连接数据,现在我们经常使用的数据库有MySQL数据库,Oracle数据库,Redis(非关系型数据库),Mongodb(非关系型数据库)等等。

本章目标

1.学会使用SpringBoot和MyBatis通过注解的方式操作数据库

2.学会使用SpringBoot和MyBatis通过XML配置文件的方式操作数据库

项目搭建

1.打开idea,Create New Project

2.选择Spring Initializer,然后点击下一步

3.填写组织,坐标等信息,然后点击Next

4.选择依赖Web,然后勾选Web,点击Next,然后一直点击Next,直到项目结构建立完成

5.项目结构搭好之后,我们新建一些包有控制层,服务层,数据访问层,实体层,完整结构如下

6.由于我们要使用MyBatis操作数据库,所以需要添加一些依赖,完整的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">

    <modelVersion>4.0.0</modelVersion>

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.1.3.RELEASE</version>

        <relativePath/> <!-- lookup parent from repository -->

    </parent>

    <groupId>com.demo02</groupId>

    <artifactId>demo_02</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <name>demo_02</name>

    <description>Demo project for Spring Boot</description>

    <properties>

        <java.version>1.8</java.version>

    </properties>

    <dependencies>

        <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>

        <!--mybatis-spring适配器-->

        <dependency>

            <groupId>org.mybatis.spring.boot</groupId>

            <artifactId>mybatis-spring-boot-starter</artifactId>

            <version>1.1.1</version>

        </dependency>

        <!--mysql驱动包-->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>5.1.30</version>

        </dependency>

    </dependencies>

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

</project>

7.接下来我们需要新建数据库以及生成实体,数据的建立我就不重复多说了,说一下使用idea快速生成实体(Product),数据库的sql脚本如下

#创建商品信息表create  tableproduct(    pid int primary key not nullauto_increment COMMENT"商品编号",    pname varchar(50) COMMENT"商品名称",    pprice DECIMAL(10,2) COMMENT"商品价格",    ptime varchar(50) COMMENT"入库时间",    pcount intCOMMENT"库存",    pstatus int COMMENT"商品状态" #0代表下架,1代表上架)COMMENT"商品信息表"insert into product(pname,pprice,ptime,pcount,pstatus)VALUES("苹果",11,"2019-10-1",11,1)

SELECT * from product

8.Database表示要连接的数据库名称,User表示用户名称,Password表示密码,然后点击Ok,然后选择你要生成实体的目录,生成完成之后基本结构就搭建好了

9.Product实体代码如下

packagecom.ssm.entity;/** 商品实体类* */public classProduct {  private long pid;//编号  private String pname;//名称  private double pprice;//价格  private String ptime;//入库时间  private long pcount;//数量  private long pstatus;//状态  //无参构造方法  publicProduct() {}  //带参构造方法  public Product(long pid, String pname, double pprice, String ptime, long pcount, longpstatus) {    this.pid =pid;    this.pname =pname;    this.pprice =pprice;    this.ptime =ptime;    this.pcount =pcount;    this.pstatus =pstatus;  }  public longgetPid() {    returnpid;  }  public void setPid(longpid) {    this.pid =pid;  }  publicString getPname() {    returnpname;  }  public voidsetPname(String pname) {    this.pname =pname;  }  public doublegetPprice() {    returnpprice;  }  public void setPprice(doublepprice) {    this.pprice =pprice;  }  publicString getPtime() {    returnptime;  }  public voidsetPtime(String ptime) {    this.ptime =ptime;  }  public longgetPcount() {    returnpcount;  }  public void setPcount(longpcount) {    this.pcount =pcount;  }  public longgetPstatus() {    returnpstatus;  }  public void setPstatus(longpstatus) {    this.pstatus =pstatus;  }  @Override  publicString toString() {    return "Product{" +            "pid=" + pid +            ", pname='" + pname + '\'' +            ", pprice=" + pprice +            ", ptime='" + ptime + '\'' +            ", pcount=" + pcount +            ", pstatus=" + pstatus +            '}';

  }

}

SpringBoot整合myBais方式一(注解方式)

1.接下来,我们就需要配置一下连接数据库的配置文件,在application.xml中进行配置,applicaion.xml文件如下

#连接数据库的驱动

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#连接数据库的url

spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8

#用户名

spring.datasource.username=root

#密码

spring.datasource.password=123456

2.现在我们就可以操作数据库了,编写ProductDao,ProductService,ProductImple,ProductController以及配置SpringBoot主程序,由于我们新建的包不是和SpringBoot主程序同级目录,所以无法扫描到(项目启动时,只有@SpringBootApplication 所在的包被扫描,启动类是MainApplication.java, 也就是MainApplication.java类所在的这个包,而其他的controller和service以及mapper在其他的包里,所以并没有被扫描)所以我们需要配置一下

3.ProductDao文件如下

packagecom.ssm.dao;importcom.ssm.entity.Product;importorg.apache.ibatis.annotations.Select;importjava.util.List;public interfaceProductDao {    @Select("select * from product")    List findAllProduct();

}

4.ProductService文件如下

packagecom.ssm.service;importcom.ssm.entity.Product;importjava.util.List;public interfaceProductService {    List findAllProduct();

}

5.ProductImple文件如下

packagecom.ssm.service.imple;importcom.ssm.dao.ProductDao;importcom.ssm.entity.Product;importcom.ssm.service.ProductService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;@Servicepublic class ProductImple implementsProductService {    @Autowired    privateProductDao productDao;    @Override    public ListfindAllProduct() {        return productDao.findAllProduct();

    }

}

6.ProductController文件如下

packagecom.ssm.controller;importcom.ssm.entity.Product;importcom.ssm.service.ProductService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;@RestControllerpublic classProductController {    @Autowired    privateProductService productService;    //查询全部的商品信息    @GetMapping("/product")    public ListfindAllProduct(){        return  productService.findAllProduct();

    }

}

7.SpringBoot主程序文件如下

packagecom.demo02.demo_02;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.ComponentScan;@SpringBootApplication@ComponentScan(basePackages = {"com.ssm.controller","com.ssm.service"})@MapperScan(basePackages = {"com.ssm.dao"})public classDemo02Application {    public static voidmain(String[] args) {        SpringApplication.run(Demo02Application.class, args);

    }

}

8.点击运行,在地址栏输入localhost:8080/product,如果出现如下结果,那么恭喜你,第一种方式你已经学会了

SpringBoot整合MyBatis方式二(XML配置文件)

1.现在我们通过第二种方式操作数据库,我们先将application.xml中的配置文件全部注释,然后新建applicaion.yml,为什么要使用这种格式呢?因为这种方式方便简洁,官方也推荐我们使用这种类型,这是一些的相关格式.

server:

  port: 8801

eureka:

  client:

    registerWithEureka: false

    fetchRegistry: false

    serviceUrl:

      defaultZone: http://localhost:8801/eureka/

2.applicaion.yml配置如下

spring:

  datasource:

    driver-class-name: com.mysql.jdbc.Driver

    url:  jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8

    username: root

    password: 123456

mybatis:

  typeAliasesPackage: com.ssm.entity

  mapperLocations:  classpath:mapper/*Mapper.xml

3.我们要通过xml的格式操作数据库也就是我们需要写Mapper.xml文件,在src/main/resources新建Mapper文件夹,然后新建ProductMapper.xml

4.ProductMapper.xml文件如下

                select  * from product

    </select>

</mapper>

5.ProductDao文件如下

packagecom.ssm.dao;importcom.ssm.entity.Product;importorg.apache.ibatis.annotations.Select;importjava.util.List;public interfaceProductDao {//    @Select("select * from product")    List findAllProduct();

}

6.ProductService文件如下

packagecom.ssm.service;importcom.ssm.entity.Product;importjava.util.List;public interfaceProductService {    List findAllProduct();

}

7.ProductImple文件如下

packagecom.ssm.service.imple;importcom.ssm.dao.ProductDao;importcom.ssm.entity.Product;importcom.ssm.service.ProductService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;@Servicepublic class ProductImple implementsProductService {    @Autowired    privateProductDao productDao;    @Override    public ListfindAllProduct() {        return productDao.findAllProduct();

    }

}

8.ProductController文件如下

packagecom.ssm.controller;importcom.ssm.entity.Product;importcom.ssm.service.ProductService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;@RestControllerpublic classProductController {    @Autowired    privateProductService productService;    //查询全部的商品信息    @GetMapping("/product")    public ListfindAllProduct(){        return  productService.findAllProduct();

    }

}

9.SpringBoot主程序文件如下

packagecom.demo02.demo_02;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.ComponentScan;@SpringBootApplication@ComponentScan(basePackages = {"com.ssm.controller","com.ssm.service"})@MapperScan(basePackages = {"com.ssm.dao"})public classDemo02Application {    public static voidmain(String[] args) {        SpringApplication.run(Demo02Application.class, args);

    }

}

10.运行,结果和之前的一样

总结

通过对本章的学习,我们已经可以操作数据库了,相对SSM框架来说,SpringBoot的确简化了我们许多操作,当你需要哪些依赖时,我们直接选择就可以,它也的确比较实在。也希望大家可以和我多多交流。

相关文章

网友评论

    本文标题:SpringBoot学习总结二之SpringBoot整合myBa

    本文链接:https://www.haomeiwen.com/subject/mlbwpqtx.html