Springboot基础学习之(十五):通过Mybatis框架实现对数据库的操作

什么是Mybatis框架?

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

为什么要使用Mybatis框架?

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

  • 提供映射标签,支持对象与数据库的ORM字段关系映射。

  • 提供对象关系映射标签,支持对象关系组建维护。

  • 提供xml标签,支持编写动态sql。

 Mybatis则是在实现自动化过程的一个代表成果,减少手动对与sql信息交互的配置,极大的解放了双手。

本篇文章则是在上一篇文件的进阶,通过Mybatis框架来实现对数据库的操作,在博主的spring boot的专栏内容里,前几篇已经通过代码来实现对数据的库的操作。

通过Mybatis框架来实现对数据库的操作

一:导入Mybatis环境的依赖

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

实现的功能是对数据库的操作

数据库中数据

 关于对数据库的连接前面的一篇文章已经讲解的十分详细了,有不明白的可以查看一下Springboot实现对数据库的连接在已经连接成功的基础上:实现对数据库的操作

二:创建pojo实体类:存储信息   boys.java

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class boys {

    private int id;
    private String boyName;
    private int userCP;

}

注意;这里出现的三种注解全都是lombok包下的方法,所以需要提前导入lombok依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

三:创建接口:接口定义存放着数据库的操作方法

注意:这个代码实现流程需要一个注解mapper

@Mapper: 这个注解一般使用在Dao层接口上,相当于一个mapper.xml文件,它的作用就是将接口生成一个动态代理类。加入了@Mapper注解,目的就是为了不再写mapper映射文件。这个注解就是用来映射mapper.xml文件的。

使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中

注意:在Dao层不要存在相同名字的接口,也就是在Dao不要写重载。因为mapper文件是通过id与接口进行对应的,如果写了两个同名的接口,就会导致mapper文件映射出错。
 

定义一个接口:boysMapper

import com.mybatis.demo.pojo.boys;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface boysMapper {
    List<boys> queryboysList();     //查询数据库全部的信息

    boys queryboysId(int id);       //查询指定信息

    int addboys(boys boys);         //添加用户

    int updateboys(boys boys);      //更新用户

    int deletaboys(boys boys);      //删除用户  

}

 接口实现完成了,并标注的Mapper注解,接下来则是通过映射文件,去实现对应相应的类文件

创建xml文件实现,方法重载接口中创建的方法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--        映射到指定的接口-->
<mapper namespace="com.mybatis.demo.Mapper.boysMapper">
<!--    并重载接口中定义的方法-->
    <select id="queryboysList" resultType="boys">
        select * from boys
    </select>
    <select id="queryboysId" resultType="boys">
        select * from mybatis.user where id = #{id}
    </select>
    <insert id="addboys" parameterType="boys">
        insert into mybatis.user(id, boyName, userCP)
        values (#{id},#{boyName},#{userCP});
    </insert>
    <update id="updateboys" parameterType="boys">
        update mybatis.user set boyName=#{boyName},userCP=#{userCP} where id=#{id}
    </update>
    <delete id="deletaboys" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>

</mapper>

关于创建的xml文件以及创建的Mapper几口,如何实现被扫描到?

在配置文件进行扫描的配置

mybatis.type-aliases-package=com.mybatis.demo.pojo
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

 这两行则是确保刚才创建的文件能够被扫描到,并能够被springboot项目所能够管理。

创建Controller类实现:对数据库的操作

package com.mybatis.demo;

import com.mybatis.demo.Mapper.boysMapper;
import com.mybatis.demo.pojo.boys;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class boyController {
    @Resource
    private boysMapper boysMapper;
    @RequestMapping("/show")
    public List<boys> queryboysList(){
        List<boys> boysList = boysMapper.queryboysList();
        for (boys boys: boysList){
            System.out.println(boys);
        }
        return boysList;
    }
    @RequestMapping("/queryUser/{id}")
    public boys queryUserById(@PathVariable("id") int id){
        return boysMapper.queryboysId(id);
    }
    @RequestMapping("/addUser")
    public String addUser(){
        int res = boysMapper.addboys(new boys(10,"不想睡醒的梦",123456));
        if (res == 1)
            return "OK";
        else
            return "ERROR";
    }
    @RequestMapping("/delete/{id}")
    public String deleteUser(@PathVariable("id") int id){
        int res = boysMapper.deletaboys(id);
        if (res == 1)
            return "OK";
        else
            return "ERROR";
    }
    @RequestMapping("/updateUser")
    public String updateUser(){
        int res = boysMapper.updateboys(new boys(10,"xxxx",111111));
        if (res == 1)
            return "OK";
        else
            return "ERROR";
    }
}

注意:代码实现的流程差不多相同,所以就不进行一一展示了

只展示查看表中的所有信息

 通过框架实现对数据库的操作成功

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想睡醒的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值