SpringBoot构建微服务实战 之 整合Mybatis(一)

SpringBoot构建微服务实战 之 整合Mybatis

SpringBoot整合 Mybatis 主要有两种主流的方法,一是基于注解的整合,二是基于配置的整合。本章我们学习一下SpringBoot 基于注解整合 Mybatis。


  • 新建Maven项目
    这里写图片描述

  • 添加依赖和修改pom.xml文件

    <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>
        <groupId>com.sstps.springBoot</groupId>
        <artifactId>Martket</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <Maven.compiler.source>1.8</Maven.compiler.source>
            <Maven.compiler.target>1.8</Maven.compiler.target>
        </properties>
    
    
        <dependencyManagement>
            <dependencies>
                <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>1.5.8.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
    
            <!-- SpringBoot starts -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <!-- SpringBoot ends -->
    
    
            <!-- mysql starts -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.1</version>
            </dependency>
            <!-- mysql ends -->
    
    
            <!-- mybatis starts -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>
            <!-- mybatis ends -->
    
            <!-- junit starts -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- junit ends -->
    
        </dependencies>
    </project>
  • 配置数据源 application.properties

    spring.datasource.url=jdbc:mysql:///sstps_product?useSSL=false&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=bai5331359
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  • 建库建表 product.sql

    create database sstps_product default charset uft8;
    
    create table products(pid int not null primary key auto_increment,pname varchar(200),type varchar(50),price double,createTime timestamp)
  • 新建Product 实体 Product.java

    package com.sstps.market.entity;
    
    import java.security.Timestamp;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class Product {
    
        private Integer pid;
        private String pname;
        private String type;
        private Double price;
        private Timestamp createTime;
    
        public Integer getPid() {
            return pid;
        }
    
        public void setPid(Integer pid) {
            this.pid = pid;
        }
    
        public String getPname() {
            return pname;
        }
    
        public void setPname(String pname) {
            this.pname = pname;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public Double getPrice() {
            return price;
        }
    
        public void setPrice(Double price) {
            this.price = price;
        }
    
        public Timestamp getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Timestamp createTime) {
            this.createTime = createTime;
        }
    
        @Override
        public String toString() {
            return "Product [pid=" + pid + ", pname=" + pname + ", type=" + type + ", price=" + price + ", createTime="
                    + createTime + "]";
        }
    }
    
  • 新建Mapper ProductMapper.java

    package com.sstps.market.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    import com.sstps.market.entity.Product;
    
    @Mapper
    public interface ProductMapper {
    
        @Insert("insert into products (pname,type,price) values(#{pname},#{type},#{price})")
        public Integer addProduct(Product product);
    
    
        @Delete("delete from products where pid =#{arg1}")
        public Integer deleteById(int pid);
    
    
        @Update("update products set pname=#{pname},type=#{type},price=#{price} where pid=#{pid}")
        public Integer updateProduct(Product product);
    
        @Select("select * from products where pid =#{arg1}")
        public Product getProductById(Integer id);
    
        @Select("select * from products oredr by pid desc")
        public  List<Product> queryProductByList();
    
    
    }
    

    代码解读:
    @Mapper MyBatis 集成SpringBoot 注解 使用该注解Spring 会为Mybaits生成相应实体类。

    @Insert/@update/@Delete/@Select:MyBatis Mapper接口注解。

  • App.java

    package com.sstps.market;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.sstps.market.entity.Product;
    import com.sstps.market.mapper.ProductMapper;
    
    @SpringBootApplication
    public class App {
    
        @Transactional
        public static void main(String[] args) {
    
            ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
            ProductMapper productMapper = context.getBean(ProductMapper.class);
    
            Product product = context.getBean(Product.class);
    
            product.setPname("SpringBootDemo");
            product.setType("LearningMatires");
            product.setPrice(105.00);
    
            productMapper.addProduct(product);
    
            context.close();
    
        }
    
    }
    
  • 结果
    这里写图片描述


小结

  • SpringBoot 整合Mybatis 需要相应的jar 包,具体请看 pom.xml 代码和注解。同时我们也许知道 SpringBoot 与 Mybatis 的关联jar 是由 Mybatis 方提供的(谁叫Spring 牛逼呢~~)。

  • 基于注解整合Mybatis 时只需要引入@Mapper 注解并在相应的抽象方法上添加 @Insert/@update/@Delete/@Select 即可完成Mybatis 的实体类的注入和Mapper关系的建立(实际由mybatis-spring-boot-starter\1.3.0\mybatis-spring-boot-starter-1.3.0.jar 封装整个映射的实现和抽象)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值