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

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

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 mapperPUBLIC "-//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 {@Resourceprivate 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";elsereturn "ERROR";}@RequestMapping("/delete/{id}")public String deleteUser(@PathVariable("id") int id){int res = boysMapper.deletaboys(id);if (res == 1)return "OK";elsereturn "ERROR";}@RequestMapping("/updateUser")public String updateUser(){int res = boysMapper.updateboys(new boys(10,"xxxx",111111));if (res == 1)return "OK";elsereturn "ERROR";}
}

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

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

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

机械设备网