欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录一下springboot+mybatis实现增删改查的基本流程和心得

程序员文章站 2022-04-07 17:57:14
记录一下springboot+mybatis实现增删改查的基本流程和心得springboot是一个spring家族中举足轻重的那一个,也是在javaweb实际开发过程经常使用到的一个框架,熟练使用springboot是在实际工作中非常重要的。(在一开始中我认为要先学会如何使用,而不是深究底层原理和代码,毕竟一般的java开发工作中只会项目经理只会不停给你分配增删改查的功能任务,当然,随着开发经验的不断提升,只止步于增删改查会很难得到工作地位提升的机会)第一步:导入pom.xml依赖<!--spr...

记录一下springboot+mybatis实现增删改查的基本流程和心得

springboot是一个spring家族中举足轻重的那一个,也是在javaweb实际开发过程经常使用到的一个框架,熟练使用springboot是在实际工作中非常重要的。(在一开始中我认为要先学会如何使用,而不是深究底层原理和代码,毕竟一般的java开发工作中项目经理只会不停给你分配增删改查的功能任务,当然,随着开发经验的不断提升,只止步于增删改查会很难得到工作地位提升的机会)

第一步:导入pom.xml依赖

<--springboot依赖引入-->
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
</dependencies>

引入此依赖后等待加载完毕,创建一个处于包下第一层的入口类,命名规则是xxApplication吗,然后在类中添加入口方法

@SpringBootApplication
public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

@SpringBootApplication是用来表示这是一个springboot项目的启动项类,目的是开启自动配置
然后可以写一个测试类测试一下是否配置成功
首先创建一个类,类名上加@RequestMapping("/users"),-----表示路径名为/users
在加@RestController , ----@RestController注解相当于@ResponseBody + @Controller两个注解,@ResponseBody是返回json信息, @Controlle是对应的视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面,只是科普,实际工作都是加@RestController。
注解加完,创建一个返回String类型的方法

@GetMapping(value = "/")
    public String go(){
     return "Hello,world";
}

@GetMapping不用理解那么多,知道用来处理get请求的方法,开发中get请求的方法大多数都是各种selec,value是设置请求路径,这个随意设置,实际开发中和前端的开发人员说一声,填写的路径要保持一致。
运行application程序
页面输入 http://localhost:8080/users/
记录一下springboot+mybatis实现增删改查的基本流程和心得
出现这个页面就证明springboot依赖注入成功,可以开始springboot应用开发啦!

第二步:导入mybatis依赖

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

mybatis是一款优秀的持久层框架,对JDBC进行了封装,可以方便快捷的操作JDBC事务,其实就是写个增删改查SQL就可以对数据库进行相应操作了

第三步 配置数据库

1.创建数据库这个不用我多说了吧,创建对应的表一个USER就可以,简单的给两个属性,username和password
2.在项目中的resources文件下找到application.yml(如果没有就自己创建一个),长这么一个样子

记录一下springboot+mybatis实现增删改查的基本流程和心得
在里面填写如下信息:

spring:
  application:
    name: demo
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    username: 数据库账号
    password: 数据库密码
server:
  port: 8080
  tomcat:
    uri-encoding: utf-8

一般来说,配置好之后可以写一个JDBC测试类来测试一下配置的信息是否可以使用,如果需要的话以后我会写一个测试类放上来的。

第四步 增删改查

一般springboot项目都分为model类,Dao(mapper)类,controller类,service类,之所以这样分是有原因的,但我懒得说了,只需要记住按照这个创建对应的四个包,然后分别创建类,如下:
记录一下springboot+mybatis实现增删改查的基本流程和心得

1.在model类中写对应数据库表里的属性,分别生成getset方法,顺便在写一个有参构造器和无参构造器记录一下springboot+mybatis实现增删改查的基本流程和心得
2.在dao(mapper)类中写一个登录方法也就是查询

  //登录
    @Mapper
 public interface UserMapper {
  //登录
  public User login(Integer id, String password);
  }

注意要在类方法上加@Mapper 并且加这个类改变成一个接口,即改变成interface
这里为什么返回参数要是user类型呢?其实是有考究的,因为实现这个业务的逻辑是获取前端输入的账号和密码,然后后端检验账号密码是否正确,这个sql一般就是 select * from where username = “???” and password = “???”,而这个sql执行之后得到的信息是username和password的信息,而这两个信息正好就是user类里的属性,所以返回的类型是user
3.创建一个名字和dao(mapper)类同名的xml,放在dao(mapper)包下,和dao(mapper)类同级,如图:
记录一下springboot+mybatis实现增删改查的基本流程和心得
在创建好的xml里这样写

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.Mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.Model.User">
        <id column="ID" jdbcType="INTEGER" property="id"/>
        <result column="PASSWORD" jdbcType="VARCHAR" property="password"/>
        <result column="USERNAME" jdbcType="VARCHAR" property="username"/>
        <result column="POWER" jdbcType="INTEGER" property="power"/>
    </resultMap>
    <select id="login"  resultType="com.example.demo.Model.User">
        select * from user where USERNAME= #{username} and PASSWORD = #{password};
    </select>
</mapper>

其中mapper namespace = “com.example.demo.Mapper.UserMapper”是用于绑定Dao(mapper)接口的,当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句(通过Dao(mapper)方法名绑定)。
resultMap 元素定义了一个id叫做BaseResulmap的标识,type代表使用哪种类作为其映射的类,可以是别名或者全限定名
id column=“ID” jdbcType=“INTEGER” property=“id” 是主键
result column=“PASSWORD” jdbcType=“VARCHAR” property=“password”/就是表里的属性,这里只需要定义username和passwor就可以了
select id=“login” resultType=“com.example.demo.Model.User”
这个id很重要而且必须要和dao(mapper)接口方法名保持一致

    @Mapper
 public interface UserMapper {
  //登录
  public User login(String username, String password);(就是这个login,以后开发中xml里的sql方法id都要和这个方法名对应)
  }

如果不保持一致的话很简单,会报错,程序会没反应。
3.编写service层
先创建一个service类,把这个类改成接口

public interface UserService {
    Integer login(User model);
    }

在这里我用了返回类型是Integer是因为在业务层我打算通过判断integer来执行操作
接着写一个serviceimpl类,

@Service
public class UserServiceImpl implements UserService {
    @Autowired(required=true)
    UserMapper userMapper;
    @Override
    public Integer login(User model) {
        String username=model.getusername();
        String password=model.getPassword();
        User list =userMapper.login(username,password);
        if (list!= null){
            return 1;
        }else {
            return 0;
        }
    }
}

@Service注解要加上,效果和@mapper一样,都是自动配置,可以暂时不用深入理解,记住要加就行
@Autowirte注解就是自动写入、自动注入的意思,这个注解底下加什么类,就可以获取这个类的所有方法,知道是这样就行了
这个方法要实现implements 之前写的serivce接口
重写login方法
业务逻辑是创建账号和密码对象,分别取得mode这个参数中的username和password,然后把取得的参数传给userMapper.login()方法中得到返回的一个User list对象。
然后对list进行判断,如果这个list是个null就是里面什么信息都没有(执行的select什么都没有查出来)就返回一个0,有就返回一个1。
4.写controller类,业务层代码

@RequestMapping("/users")
@RestController
public class UserController {
    @Autowired(required=true)
    UserService userService;
    @Autowired
    UserMapper userMapper;
    //登录
 @GetMapping(value = "/login")
    public String login(@RequestParam(value = "username") String username,@RequestParam(value = "password")String password){
          User user = new User(username,password);
          int a = userService.login(user);
          if (a==1){
              return "登录成功";
          }else {
              return "登录失败";
          }
      }
 }
}

这个业务逻辑和servic的差不多,这里就是对userService.login(user)方法返回的0和1进行判断操作
最后,启动Application程序
记录一下springboot+mybatis实现增删改查的基本流程和心得
记录一下springboot+mybatis实现增删改查的基本流程和心得
记录一下springboot+mybatis实现增删改查的基本流程和心得
在讲一下 http://localhost:8080/users/login?password=admin&id=123456789 ,其中users/login是我之前讲过的路径,路径后面加?是必须的,然后就是你要传入的参数名字和对应的值。

好啦! 经过测试,这个登录也就是查询功能基本实现。有时间我会把增删改的方法也传上来讲解一下,最后声明一下,我的这篇博客纯粹只是为了基础薄弱的但又参加工作无从下手的小伙伴参考使用的,不涉及任何底层原理或代码讲解,我本人也是一个基础薄弱入职一年的菜鸟程序员,希望各位大佬嘴下留情,有什么提点可以友好的讲出来,我在这里感激不尽!

本文地址:https://blog.csdn.net/ERdRER/article/details/111933364