IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)

    本实例适合刚开始学习spring boot的有一定开发基础的同学们,使用当前比较流行的IntelliJ IDEA 2019开发工具,利用spring boot框架,采用Java语言,结合MySQL数据库设计实现用户User的增加、读取、更新、删除。首先,我们先了解一下基本概念。

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。而SpringBoot是一个全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

    IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。DEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主,支持HTML,CSS,PHP,MySQL,Python等。

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

  好了,简单了解了这些概念后,下面我们进入主题。

开发工具

IntelliJ IDEA 2019.1.1 x64

新建工程

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第1张图片

选择左侧的Spring Initializr,jdk要求1.8及以上,选择默认的Default下一步:

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第2张图片

我们可以不改这些信息直接下一步,如果想改名字可以自己修改Group及Artifact,和最下边的package包名,这里我把Group改成com,Artifact改为sjzeis,选择下一步。

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第3张图片

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第4张图片

选择项目所需要的依赖,这个页面是选择你工程中需要用到的依赖,因为我们的目标是web项目使用mybatis所以在web模块中勾选Spring Web,在SQL中依次勾选Jdbc API、Mybatis Framework、Mysql Driver。然后下一步直到finish即可。

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第5张图片

接着项目就会下载我们需要的依赖,如果之前没有下过,可能会稍等几分钟。

配置项目相关信息

来看下建好后的pom.xml文件,上一步选择的依赖,在pom.xml文件中 已经自动添加到我们的文件中了。下面为本项目的pom.xml文件内容。



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
         
    
    com
    sjzeis
    0.0.1-SNAPSHOT
    sjzeis
    sjzeis project for Spring Boot

    
        1.8
    

    
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.1
        
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


修改配置文件

    Spring Boot通过pom.xml中引入模块化的Stater,使得常规的开发场景可以很快把应用搭建起来。在使用Spring Boot的过程中,除了可以在pom.xml中配置一些内容外,一些项目相关的配置也可以在application.properties中通过配置来完成。

    application.properties文件为默认项目配置文件,默认为空的,我们可以在配置文件中配置端口、名字等一般属性,也可以配置自定义属性、参数引用、多环境配置等,可以参考 https://www.jianshu.com/p/c023083f51b4 一文说明介绍。 application.properties文件在项目-src-main-resources下。

     本项目如果使用application.properties文件,可以在文件中添加端口、数据源、mydatis等相关数据,下面为文件内容。

server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

    但是还是习惯yml标记语言文件的天然的树状结构,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读。在IDEA下书写起来也比较方便,其实SpringBoot底层会把application.yml文件解析为application.properties。所以将本项目原有的application.properties文件重构-重命名为:application_bak.properties,或者直接删除即可,这样项目不再加载该文件。接下来创建application.yml和application-dev.yml配置文件。在一个项目中可以配置多套环境,便于在团队开发中可以做到项目的分离独自开发,再整合的形式。在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

application.yml为主加载配置文件,内容如下:

spring:
  profiles:
    active: dev

application-dev.yml为主环境说明文件,内容如下:

server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml

    项目在加载时自动加载application.yml配置文件,根据配置文件中的spring.profiles.active=dev,就会再加载application-dev.yml配置文件中的内容。上面文件配置了端口号8080,数据源的驱动类、地址、登录用户名和口令,以及mybatis映射mapper路径的指定。特别需要注意的是:本项目中driver-class-name: com.mysql.cj.jdbc.Driver,是新版本org.springframework.boot和org.mybatis.spring.boot中规定的驱动,老版本的写driver-class-name: com.mysql.jdbc.Driver

项目编写及业务流程

User数据库的定义

创建User实体类实现业务流程

    一、创建项目路径包来,展示业务流程。在项目src-main-java-com-sjzeis下分别创建包:controller、entity、mapper、service,用来实现控制层、实体层、映射层、业务层。这里面简单介绍一下业务流程及各层业务的作用如下:

    1. entity实体层(别名: model层 ,domain层),用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。如:user表的实体User。

    2. mapper映射层(别名:dao层),用于对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis中方法主要与*Mapper.xml内相互一一映射。如:public interface UserMapper {...}。

    3. service业务层,用于给controller层的类提供接口进行调用。一般就是自己写的方法封装起来,就是声明一下,存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库打交道的,他也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法。如:public class UserService {...}。

    4. controller控制层(别名:web 层),用于负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller控制器导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表。如:public class UserController {...}。

 二、在src-main-resources下创建mapper包用于存放*Mapper.xml文件

项目结构如图:

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第6张图片

如果想直接创建对应的包而不是目录,可以在java目录上点击鼠标右键,选择标记目标目录为-测试源 根,如图:

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第7张图片

创建entity实体类User

package com.sjzeis.entity;

public class User {
    private int userid;
    private String username;
    private String password;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建Mapper映射操作UserMapper类

package com.sjzeis.mapper;

import com.sjzeis.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    public List findAllUser();
    public List findUserByUserId(int userid);
}

创建Mapper映射对应的UserMapper.xml文件




    
        
        
        
    

    

    

注意该文件放在resources目录下的mapper包中,具体包名位置(namespace)要和上边的映射UserMapper类对应 。

创建service业务UserService类

package com.sjzeis.service;

import com.sjzeis.entity.User;
import com.sjzeis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired(required=false)
    public UserMapper userMapper;

    public List findAllUser(){
        return userMapper.findAllUser();
    }

    public List findUserByUserId(int userid){
        return userMapper.findUserByUserId(userid);
    }
}

创建 controller控制层UserController类

package com.sjzeis.controller;

import com.sjzeis.entity.User;
import com.sjzeis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/getAllUser")
    public List findAll(){
        return userService.findAllUser();
    }

    @RequestMapping("/getUserByUserID/{userid}")
    public List findUserByUserId(@PathVariable int userid){
        return userService.findUserByUserId(userid);
    }
}

最终框架结构

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第8张图片

测试 

通过点击IDEA右上角的启动按钮,或者在SjzeisApplication类中鼠标右键选择运行启动main方法,来启动项目。

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第9张图片

地址栏输入 http://localhost:8080/user/getAllUser/,显示如下:

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第10张图片

地址栏输入 http://localhost:8080/user/getUserByUserID/1,显示如下:

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第11张图片

    通过测试的数据显示,项目测试成功!

    以上为spring boot 整合mybatis实现的User读取,接下来是添加UserMapper类的增加、更新和删除方法,配置UserMapper.xml文件,添加UserService和UserController相关功能。完整代码如下。

完整UserMapper类

package com.sjzeis.mapper;

import com.sjzeis.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    public List findAllUser();
    public List findUserByUserId(int userid);
    public List findUserByUsername(String username);
    public int insertUser(User user);
    public int updateUser(User user);
    public int deleteUser(User user);
}

完整UserService类

package com.sjzeis.service;

        import com.sjzeis.entity.User;
        import com.sjzeis.mapper.UserMapper;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;

        import java.util.List;

@Service
public class UserService {
    @Autowired(required=false)
    public UserMapper userMapper;

    public List findAllUser(){
        return userMapper.findAllUser();
    }

    public List findUserByUserId(int userid){
        return userMapper.findUserByUserId(userid);
    }

    public List findUserByUsername(String username){
        return userMapper.findUserByUsername(username);
    }

    public User insertUser(User user){
        userMapper.insertUser(user);
        return user;
    }

    public int updateUser(User user){
        return userMapper.updateUser(user);
    }

    public int deleteUser(User user){
        return userMapper.deleteUser(user);
    }
}

完整UserController类

package com.sjzeis.controller;

import com.sjzeis.entity.User;
import com.sjzeis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/getAllUser")
    public List findAll(){
        return userService.findAllUser();
    }

    @RequestMapping("/getUserByUserID/{userid}")
    public List findUserByUserId(@PathVariable int userid){
        return userService.findUserByUserId(userid);
    }

    @RequestMapping("/getUserByUsername/{username}")
    public List findUserByUsername(@PathVariable String username){
        return userService.findUserByUsername(username);
    }

    @RequestMapping("/insertUser")
    public User insertUser(User user){
        return userService.insertUser(user);
    }

    @RequestMapping("/updateUser")
    public int updateUser(User user){
        return userService.updateUser(user);
    }

    @RequestMapping("/deleteUser")
    public int deleteUser(User user){
        return userService.deleteUser(user);
    }
}

完整UserMapper.xml文件




    
        
        
        
    

    

    
    
    

    
        insert into users(username,password) values (#{username},#{password});
    

    
        update users set username=#{username},password=#{password} where userid=#{userid};
    

    
        delete from users where userid=#{userid};
    

 启动项目运行测试如下。

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第12张图片

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第13张图片

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第14张图片

IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)_第15张图片

以上为本实例的简单讲解,后续会讲一些@注解的使用,以及实例的详细介绍,敬请期待!

本实例代码下载:https://download.csdn.net/download/u011924274/11995379

 

 

 

你可能感兴趣的:(Spring,boot)