zoukankan      html  css  js  c++  java
  • Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一、前言

    • 什么是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


  • 相关阅读:
    Ubuntu 16 安装redis客户端
    crontab 参数详解
    PHP模拟登录发送闪存
    Nginx配置端口访问的网站
    Linux 增加对外开放的端口
    Linux 实用指令之查看端口开启情况
    无敌的极路由
    不同的域名可以指向同一个项目
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
    Redis 创建多个端口
  • 原文地址:https://www.cnblogs.com/ken-io/p/springboot-course-basic-curd-annotation.html
Copyright © 2011-2022 走看看