springboot学习教程(四)- mybatis的增删改查基础运用

简述

在java领域里,哪怕是新手恐怕也是对mybatis这个大名略有耳闻。毕竟这项技术在应用方面表现优异,是每一个编写java的程序员都得掌握的技能。

什么是mybatis?

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

准备工作
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--mysql连接-->
		<!--<dependency>-->
			<!--<groupId>mysql</groupId>-->
			<!--<artifactId>mysql-connector-java</artifactId>-->
		<!--</dependency>-->
		<!--整合mybatis-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.15</version>
		</dependency>


		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
  • 数据库生成一张表,这里以一张简单的demo表做示范:
CREATE TABLE `demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `code` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf


开始使用

准备好了这些,就可以开始编码了:

  1. 获取列表:
@RequestMapping(value = "/getList")
    public List<Demo> getList() {
        //创建一个Demo类的搜索条件类,利用example可以添加搜索条件
        DemoCriteria example = new DemoCriteria();
        //selectByExample可表示使用搜索条件做搜索,得出一个List结果
        List<Demo> demos = this.demoMapper.selectByExample(example);
        System.out.println("demos = " + demos);
        return demos;
    }

效果图:
在这里插入图片描述



  1. 用主键ID获取单条数据:
@RequestMapping(value = "/getOne")
    public Demo getOne(Integer id) {
        //selectByPrimaryKey表示按主键选择该条数据
        Demo demo = this.demoMapper.selectByPrimaryKey(id);
        System.out.println("demo = " + demo);
        return demo;
    }

效果图:
在这里插入图片描述



  1. 新增:
	@RequestMapping(value = "/insert")
    public Boolean insert(String name,String code) {
        Demo demo = new Demo();
        demo.setName(name);
        demo.setCode(code);
        //insertSelective按照现已设定参数的参做insert,而不是整个类做insert
        if (this.demoMapper.insertSelective(demo) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

效果图(从2图变为3图):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



  1. 修改(从2图变为3图):
@RequestMapping(value = "/update")
    public Boolean update(Integer id,String name,String code) {
        //按id找到该条数据
        Demo demo = this.demoMapper.selectByPrimaryKey(id);
        //如该条数据不在库,则需返回错误或者业务处理
        if (demo == null){
            return false;
        }
        //设定参数
        demo.setName(name);
        demo.setCode(code);
        //updateByPrimaryKeySelective按照现已设定参数的参做update,而不是整个类做update
        if (this.demoMapper.updateByPrimaryKeySelective(demo) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



  1. 删除:
@RequestMapping(value = "/delectById")
    public Boolean delectById(Integer id) {
        //deleteByPrimaryKey按主键删除该条数据
        //成功删除1条则返回1,删除失败则返回0
        if (this.demoMapper.deleteByPrimaryKey(id) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

效果图:
在这里插入图片描述
在这里插入图片描述

整合:

package com.example.demo.controller;

import com.example.demo.mapper.DemoMapper;
import com.example.demo.model.dto.Demo;
import com.example.demo.model.dto.DemoCriteria;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class DemoController {
    @Autowired
    DemoMapper demoMapper;

    @RequestMapping("/hello")
    public String Hello(String name) {
        return "Hello World";
    }

    @RequestMapping(value = "/getList")
    public List<Demo> getList() {
        //创建一个Demo类的搜索条件类,利用example可以添加搜索条件
        DemoCriteria example = new DemoCriteria();
        //selectByExample可表示使用搜索条件做搜索,得出一个List结果
        List<Demo> demos = this.demoMapper.selectByExample(example);
        System.out.println("demos = " + demos);
        return demos;
    }

    @RequestMapping(value = "/getOne")
    public Demo getOne(Integer id) {
        //selectByPrimaryKey表示按主键选择该条数据
        Demo demo = this.demoMapper.selectByPrimaryKey(id);
        System.out.println("demo = " + demo);
        return demo;
    }

    @RequestMapping(value = "/delectById")
    public Boolean delectById(Integer id) {
        //deleteByPrimaryKey按主键删除该条数据
        //成功删除1条则返回1,删除失败则返回0
        if (this.demoMapper.deleteByPrimaryKey(id) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

    @RequestMapping(value = "/insert")
    public Boolean insert(String name,String code) {
        Demo demo = new Demo();
        demo.setName(name);
        demo.setCode(code);
        //insertSelective按照现已设定参数的参做insert,而不是整个类做insert
        if (this.demoMapper.insertSelective(demo) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

    @RequestMapping(value = "/update")
    public Boolean update(Integer id,String name,String code) {
        //按id找到该条数据
        Demo demo = this.demoMapper.selectByPrimaryKey(id);
        //如该条数据不在库,则需返回错误或者业务处理
        if (demo == null){
            return false;
        }
        //设定参数
        demo.setName(name);
        demo.setCode(code);
        //updateByPrimaryKeySelective按照现已设定参数的参做update,而不是整个类做update
        if (this.demoMapper.updateByPrimaryKeySelective(demo) == 1){
            System.out.println("true");
            return true;
        }else {
            System.out.println("false");
            return false;
        }
    }

}

备注:以上请求为未设定请求方式,因此可以用浏览器直接请求访问,这种请求方式为GET方式。

设定请求方式的方法:

@RequestMapping(value = "/getList", method = RequestMethod.GET)

请求方式除了GET以外还有许多,例如:POST,DELETE,HEAD,TRACE等等;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值