一、前言

  • 什么是MyBatis?
    MyBatis是目前Java平台最为流行的ORM框架
    https://baike.baidu.com/item/MyBatis/2824918

  • 本篇开发环境
    1、操作系统: Windows 10 X64
    2、Java SDK: jdk-8u141
    3、Maven:3.5
    4、IDE:IntelliJ IDEA 2017
    5、Spring Boot:1.5.6

本项目构建基于:https://ken.io/note/springboot-course-basic-helloworld

二、Spring Boot整合MyBatis

  • 引入核心依赖
package 说明
mybatis-spring-boot-starter MyBatis核心for Spring Boot
mysql-connector-java 用于连接MySQL

pom.xml文件:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> </dependencies>
  • 配置数据库连接

在配置文件:application.yml中增加以下配置:

spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/course?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: mysql
password: password

数据库自行创建MySQL下载地址:https://dev.mysql.com/downloads/

  • Package创建
Package 说明
io.ken.springboot.course.model 用于存放实体
io.ken.springboot.course.dao 用于存放数据访问映射*mapper
  • user表&实体创建

1、user表创建脚本

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`hobby` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、user实体

package io.ken.springboot.course.model;

public class User {

    private int id;

    private String name;

    private int age;

    private String hobby;

    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 int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getHobby() {
return hobby;
} public void setHobby(String hobby) {
this.hobby = hobby;
}
}

getger和setter可以选中类名之后使用快捷键Alt+Insert生成

  • 创建UserMapper,用于User数据库操作映射
package io.ken.springboot.course.dao;

import io.ken.springboot.course.model.User;
import org.apache.ibatis.annotations.*; import java.util.List; @Mapper
public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}")
User queryById(@Param("id") int id); @Select("SELECT * FROM user")
List<User> queryAll(); @Insert({"INSERT INTO user(name,age,hobby) VALUES(#{name},#{age},#{hobby})"})
int add(User user); @Delete("DELETE FROM user WHERE id = #{id}")
int delById(int id); @Update("UPDATE user SET name=#{name},age=#{age},hobby=#{hobby} WHERE id = #{id}")
int updateById(User user);
}
  • 创建UserController并提供API
package io.ken.springboot.course.controller;

import io.ken.springboot.course.dao.UserMapper;
import io.ken.springboot.course.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller
@RequestMapping("/user")
public class UserController { @Autowired
UserMapper userMapper; @RequestMapping("/querybyid")
@ResponseBody
User queryById(int id) {
return userMapper.queryById(id);
} @RequestMapping("/queryall")
@ResponseBody
List<User> queryAll() {
return userMapper.queryAll();
} @RequestMapping("/add")
@ResponseBody
String add(User user) {
return userMapper.add(user) == 1 ? "success" : "failed";
} @RequestMapping("/updatebyid")
@ResponseBody
String updateById(User user) {
return userMapper.updateById(user) == 1 ? "success" : "failed";
} @RequestMapping("/delbyid")
@ResponseBody
String delById(int id) {
return userMapper.delById(id) == 1 ? "success" : "failed";
}
}
  • API测试
API 示例
添加用户 /user/add?name=tom&age=1&hobby=football
更新用户 /user/updatebyid?name=ken&age=18&hobby=coding&id=1
查询指定用户 /user/querybyid?id=1
查询所有用户 /user/queryall
删除指定用户 /user/delbyid?id=2

本文代码示例:https://github.com/ken-io/springboot-course/tree/master/chapter-02-01


Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版的更多相关文章

  1. Spring Boot入门教程1、使用Spring Boot构建第一个Web应用程序

    一.前言 什么是Spring Boot?Spring Boot就是一个让你使用Spring构建应用时减少配置的一个框架.约定优于配置,一定程度上提高了开发效率.https://zhuanlan.zhi ...

  2. Spring Boot 入门教程

    Spring Boot 入门教程,包含且不仅限于使用Spring Boot构建API.使用Thymeleaf模板引擎以及Freemarker模板引擎渲染视图.使用MyBatis操作数据库等等.本教程示 ...

  3. Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

    https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=6 ...

  4. Spring Boot入门教程(1)

    Spring Boot入门教程(1) 本文将使用Spring Boot一步步搭建一个简单的Web项目来帮助你快速上手. 将要用到的工具 JDK 8 IntelliJ IDEA(Ultimate Edi ...

  5. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  6. Spring Cloud 入门教程(七): 熔断机制 -- 断路器

    对断路器模式不太清楚的话,可以参看另一篇博文:断路器(Curcuit Breaker)模式,下面直接介绍Spring Cloud的断路器如何使用. SpringCloud Netflix实现了断路器库 ...

  7. Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

    首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...

  8. Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

    1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboa ...

  9. Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

    在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...

随机推荐

  1. HighCharts之2D颜色阶梯饼图

    HighCharts之2D颜色阶梯饼图 1.实例源码 PieGradient.html: <!DOCTYPE html> <html> <head> <met ...

  2. 安装STS报错(三)

    安装STS报错 1.具体报错如下 Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo.ma ...

  3. Error Code: 1630. FUNCTION rand.string does not exist

    1.错误描述 13:50:13 call new_procedure Error Code: 1630. FUNCTION rand.string does not exist. Check the ...

  4. The struts dispatcher cannot be found

    1.错误描述 严重:Servlet.service() for servlet jsp threw exception The struts dispatcher cannot be found.Th ...

  5. Exception sending context initialized event to listener instance of class

    1.错误描述 严重:Exception sending context initialized event to listener instance of class org.springframew ...

  6. MyEclipse提示出错

    1.错误描述 The 'org.eclipse.jdt.ui.JavaAllCompletionProposalComputer' proposal computer from 'org.eclips ...

  7. javax.servlet.JspTagException:Illegal use of &lt;when&gt;-style tag without &lt;choose &gt;as its di

    1.错误描述 javax.servlet.JspTagException:Illegal use of <when>-style tag without <choose >as ...

  8. MySQL中information_schema数据库的内容

    大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_schema数据库是做什么用的呢,使用WordPress博客 ...

  9. Redis进阶实践之十六 Redis大批量增加数据

    一.介绍      有时,Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据,以便尽可能快地创建数百万个键.这就是所谓的批量插入,本文档的目标是提供有关如何以尽可能快的速度向Redis提 ...

  10. Bzoj3992:[SDOI2015]序列统计

    题面 Bzoj Sol pts 1 大暴力很简单,\(f[i][j]\)表示到第\(i\)个位置,前面积的模为\(j\)的方案 然后可以获得\(10\)分的好成绩 # include <bits ...