Mybatis整合Springboot(基本的crud)

一、什么是Mybatis

二、配置项

三、crud

OK啊,在搞定Mybatis整合springboot之前,咱写了解一下什么是Mybatis,如下文


一:什么是Mybatis?

MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。 MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名 为MyBatis 。

 1.1持久化

持久化是将程序数据在持久状态和瞬时状态间转换的机制。 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存 中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。 JDBC就是一种持久化机制。文件IO也是一种持久化机制。 在生活中 : 将鲜肉冷藏,吃的时候再解冻的方法也是。将水果做成罐头的方法也是。 为什么需要持久化服务呢?那是由于内存本身的缺陷引起的 内存断电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号等,遗憾的是,人们还 无法保证内存永不掉电。 内存过于昂贵,与硬盘、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需 要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持 久化来缓存到外存。

1.2 什么是持久层?

完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】 大多数情况下特别是企业级应用,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化, 而持久化的实现过程则大多通过各种关系数据库来完成。 不过这里有一个字需要特别强调,也就是所谓的“层”。对于应用系统而言,数据持久功能大多是必不可 少的组成部分。也就是说,我们的系统中,已经天然的具备了“持久层”概念?也许是,但也许实际情况 并非如此。之所以要独立出一个“持久层”的概念,而不是“持久模块”,“持久单元”,也就意味着,我们的系 统架构中,应该有一个相对独立的逻辑层面,专注于数据持久化逻辑的实现. 与系统其他部分相对而言,这个层面应该具有一个较为清晰和严格的逻辑边界。【说白了就是用来操作 数据库存在的!】

1.3为什么需要Mybatis?

Mybatis就是帮助程序猿将数据存入数据库中 , 和从数据库中取数据 . 传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等... , 通过框架可以 减少重复代码,提高开发效率 . MyBatis 是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射 所有的事情,不用Mybatis依旧可以做到,只是用了它,所有实现会更加简单!技术没有高低之分, 只有使用这个技术的人有高低之别 MyBatis的优点简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映 射文件就可以了,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和 实现。 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理 和优化。通过sql语句可以满足操作数据库的所有需求。 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清 晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 提供xml标签,支持编写动态sql。 ....... 最重要的一点,使用的人多!公司需要!

二:Mybatis整合springboot的配置

第一步:

在基本的Springboot项目依赖文件中加入如下依赖



        <!--        Mybatis整合springboot-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>


        <!--        MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

第二步:

配置yml文件

1.修改内置tomcat得端口号

server:
  port: 8088 # 端口号
  connection-timeout: 1000m # 连接超时时间

第三步:

配置数据源

当我们引入MySQL驱动依赖之后,不添加该配置就会报错(找不到数据库的路径),这时候就需要自己来手动配置一下自己的数据库路径以及账号密码

由于该项目的MySQL驱动依赖是8.0.31版本的,简单来说就是版本为8的以后需要加上cj( driver-class-name: com.mysql.cj.jdbc.Driver),并且URL路径最后要加上一个时区,如下代码加的为↑Shanghai,以下的就不要添加 : driver-class-name: com.mysql.jdbc.Driver

Spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/jdbc_1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai

OK啊准备工作搞完了,接下来就是枯燥的crud代码了

三:crud

第四步:

创建好所需的包Controller,service,Mapper,pojo

这里提一下:原本的Mvc的dao层在整合Mybatis后就替换为了Mapper,当然意思还是以前那个意思都是访问数据库存取那点东西

这里的Mapper层写的是接口类,至于他的实现类也替换为了xml文件,Mapper.xml,意思呢也还是那个意思啊!,通过xml实现接口类里的方法,咱下边走代码喽一眼

创建好Mapper包后里面的类方法还并没有被Spring的bean容器接管,这时候就要在主方法类上加入@MapperScan("com.aaa.mapper")注解,让其被扫描到注入容器中,如果不想这么做可以在mapper下的实现类上添加@Mapper注解,一个样子的

第五步:

在resources下创建一个Mapper包,以下用来存放Mapper.xml文件,如下图

Controller,pojo,service咱就不说了,毕竟还是以前的老样子嘛Controller调service的方法

service调用dao,这里是Mapper!

第六步:

编写基本的crud方法

如下代码依旧是咱最熟悉不过的crud基本方法,那么现在接口也有了,就可以使用xml来实现这些方法了

  public interface EmpMapper {
    int insert(Student student);
    int delete(int id);
    int update(Student student);
    List<Student> select();
}

第七步:

xml实现接口方法

namespace="com.aaa.mapper.EmpMapper":这里是接口类的路径

id="Select":就是实现类中方法的方法名

resultType:"com.aaa.pojo.Student":这里是sql语句查询到的数据返回的结果集类型

parameterType="com.aaa.pojo.Student":这里是service层传过来的参数类型,也就是该方法的接受的参数类型,因为这里返回的是一个实体类,所以这里直接就写上了实体类的路径

这里的语法问题呢我想也都有疑惑为啥要这样写,但是是实在是太多了,可以参考一下官网的教程好吧!链接放这下面了

入门_MyBatis中文网

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aaa.mapper.EmpMapper">

    <select id="Select" resultType="com.aaa.pojo.Student">
     select * from student
    </select>

    <insert id="Insert" parameterType="com.aaa.pojo.Student">
      insert  student(stuname,sex,birthday,idcard)value(#{stuname},#{sex},#{birthday},#{idcard});
    </insert>

    <update id="Update">
      update student set stuname=#{stuname},sex=#{sex},birthday=#{birthday},idcard=#{idcard} where id=#{id};
    </update>

    <delete id="Delete">
     delete from student where id=#{id}
    </delete>
</mapper>

  • 31
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值