Spring Boot数据库操作之Spring Boot Mybatis

版权声明:本文为博主原创文章,转载需注明出处。 https://blog.csdn.net/jay100500/article/details/81269939

                                         

作者:谭东

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

MyBatis 提供一种“半自动化”的ORM实现。这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。而MyBatis 的着力点,则在于POJO与SQL之间的映射关系。

先引入包,pom.xml引入:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

新建实体类MyBatis。

package com.tandong.testjavaweb.entity;

import java.util.Date;

public class MyBatis {
    private int id;
    private String name;
    private long price;
    private String description;
    private Date date;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getPrice() {
        return price;
    }

    public void setPrice(long price) {
        this.price = price;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

创建Dao层,MyBatisMapper。

package com.tandong.testjavaweb.mapper;

import com.tandong.testjavaweb.entity.MyBatis;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;

@Mapper
public interface MyBatisMapper {

    @Select("SELECT * FROM mybatis WHERE id = #{id}")
    MyBatis findById(@Param("id") Integer id);

    @Select(value = "select * from mybatis")
    List<MyBatis> getList();

    @Insert(value = "insert into mybatis(name, description,price,date) values(#{name}, #{description}, #{price}, #{date})")
    void addMyBatis(@Param("name") String name, @Param("description") String description, @Param("price") long price, @Param("date") Date date);
}

创建Service层,MyBatisService类。

package com.tandong.testjavaweb.service;

import com.tandong.testjavaweb.entity.MyBatis;
import com.tandong.testjavaweb.mapper.MyBatisMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MyBatisService {

    @Autowired
    private MyBatisMapper myBatisMapper;


    public List<MyBatis> getMyBatisMapper() {
        return myBatisMapper.getList();
    }

    public MyBatis getMyBatisByIdMapper(int id) {
        return myBatisMapper.findById(id);
    }

    public void addMyBatisMapper(MyBatis myBatis) {
        myBatisMapper.addMyBatis(myBatis.getName(), myBatis.getDescription(), myBatis.getPrice(), myBatis.getDate());
    }

}

创建Controller层,MyBatisController类,构建Resful API。

package com.tandong.testjavaweb.controller;

import com.tandong.testjavaweb.entity.MyBatis;
import com.tandong.testjavaweb.service.MyBatisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RestController
@SpringBootApplication
@RequestMapping("/mybatis")
public class MyBatisController {
    @Autowired
    MyBatisService myBatisService;

    @ResponseBody
    @GetMapping(value = "/addMyBatisMapper")
    public Object addMyBatisMapper() {
        MyBatis myBatis = new MyBatis();
        myBatis.setDate(new Date());
        myBatis.setDescription("描述");
        myBatis.setName("名字");
        myBatis.setPrice(20);
        myBatisService.addMyBatisMapper(myBatis);
        return "插入成功";
    }

    @GetMapping(value = "/getListMapper")
    public List<MyBatis> getListMapper() {
        return myBatisService.getMyBatisMapper();
    }

    @GetMapping(value = "/mapper/{idMapper}")
    public MyBatis getMyBatisByIdMapper(@PathVariable Integer idMapper) {
        return myBatisService.getMyBatisByIdMapper(idMapper);
    }
}

最后,编译运行即可。可以使用PostMan测试。

我这里使用浏览器访问。

访问:http://localhost:8082/mybatis/addMyBatisMapper 进行插入数据操作。

访问:http://localhost:8082/mybatis/getListMapper 获取数据库列表,返回的是JSON格式。

访问:http://localhost:8082/mybatis/mapper/2 后面的是id,可以获取对应id的Product信息。

注意,如果表没创建,那么会报错,需要提前把表建好。

完整项目Github地址:https://github.com/jaychou2012/Spring-Boot-Web

参考文献:

【1】mybatis-spring-boot-autoconfigure.http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

【2】MyBatis 3 | 简介.http://www.mybatis.org/mybatis-3/zh/index.html

猜你喜欢

转载自blog.csdn.net/jay100500/article/details/81269939