mybatis框架学习

     2022-03-16     212

关键词:

 
MyBatis介绍
 
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并改名为MyBatis。2013年11月迁移到Github。iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
 
当我们在DAO层使用jdbc连接数据查询数据时,会发现有许多重复的代码。
为了减少代码量与遵循开发规范,我们可以使用MyBatis框架。
MyBatis作为一个持久层的框架,几乎消除了jdbc代码。
它能够将数据库中的记录映射成基本类型、Map类型和Pojo类型。
 
MyBatis在开发中的位置
技术分享
由上图可以看出MyBatis位于DAO层,具体来说是DAO层下面连接数据库的实现类中。
 
我们可以分析一下jdbc连接数据那些变化的部分
技术分享
从上面的图片我们可以看出在使用jdbc连接数据的时候那些变化的部分:
  1、输入参数类型
  2、sql语句
  3、参数设置
  4、封装数据
那些重复的部分交给MyBatis框架完成,变化的部分我们在程序中仍要实现,就好像我们之前使用的根据类一样。
只不过在使用了框架之后,实现的方式有写代码的方式转到配置文件元素的方式而已。
 
 
MyBatis应用的简单程序
1、新建Java工程
2、导入相关的jar包
技术分享
3、编写全局配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- mybatis的运行环境
        数据库信息
        事务
     -->
    <environments default="development">
        <environment id="development">
            <!-- jdbc事务 -->
            <transactionManager type="JDBC" />
            <!-- mybatis自身数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
                <property name="username" value="scott" />
                <property name="password" value="tiger" />
            </dataSource>
        </environment>
    </environments>
    
    <!-- 映射文件的信息  -->
    <mappers>
        <mapper resource="sqlmap/GoodsDAO.xml"/>
    </mappers>
</configuration>

 

4、实体类:GoodsModel
技术分享
package cn.sxt.mybatis.vo;

public class GoodsModel {
    private int uuid;
    private String name;
    private String description;
    private float price;
    
    public GoodsModel() {
        
    }

    public GoodsModel(int uuid, String name, String description, float price) {
        this.uuid = uuid;
        this.name = name;
        this.description = description;
        this.price = price;
    }

    public int getUuid() {
        return uuid;
    }
    public void setUuid(int uuid) {
        this.uuid = uuid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((description == null) ? 0 : description.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + Float.floatToIntBits(price);
        result = prime * result + uuid;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        GoodsModel other = (GoodsModel) obj;
        if (description == null) {
            if (other.description != null)
                return false;
        } else if (!description.equals(other.description))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (Float.floatToIntBits(price) != Float.floatToIntBits(other.price))
            return false;
        if (uuid != other.uuid)
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "GoodsModel [uuid=" + uuid + ", name=" + name + ", description="
                + description + ", price=" + price + "]";
    }
}
View Code

 

5、编写mapper文件
<?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="goods">
    <select id="getByUuid" parameterType="int" resultType="cn.sxt.mybatis.vo.GoodsModel">
        select * from tbl_goods where uuid=#{uuid}
    </select>
</mapper>

 

6、编写测试类
package cn.sxt.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.sxt.mybatis.vo.GoodsModel;

public class TestApp {
    public static void main(String[] args) throws IOException {
        String resource = "SqlMapConfig.xml";
        //根据全局配置文件得到输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //根据输入流创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //根据SqlSessionFactory创建sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //操作
        GoodsModel gm = sqlSession.selectOne("goods.getByUuid", 1);
        System.out.println(gm);
        
        sqlSession.close();
    }
}

 

数据库表:
技术分享
从上面的程序我们可以看出:
  1、相关的jar包无须解释。
  2、全局配置文件是和我们所用的数据库有关,里面的mapper元素需要我们进行手动配置。
  3、mapper文件是使用MyBatis的一个重点。
    namespace:命名空间,防止多个id一样的方法,在调用方法时用到。
    id:方法名
    parameterType:输入参数类型
    resultType:返回结果类型
    sql语句:#{uuid} 相当于之前的‘?‘
  4、在TestApp中,我们不需要再写jdbc中那些重复的步骤。相比之下,我们需要得到一个SqlSession实例,而这个这实例可以从MyBatis框架中获取,我们可以忽略它。然后就是调用它的相对应的方法,输入相应的参数,获取查询结果。
  
 
 
 
 
 
 
 
 
 
 
 
 

mybatis框架学习

 MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并改名为MyBatis。2013年11月迁移到Github。iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBatis提... 查看详情

spring框架学习----spring整合mybatis框架(代码片段)

Spring框架学习(九)----整合Mybatis框架一、整合Mybatis的过程不管在整合前还是整合后,sqlSessionFactory都是非常重要的(mybatis的核心)整合前mybatis-config.xml配置文件->sqlSessionFactory->sqlSession整合后sqlSession 查看详情

mybatis框架学习笔记(代码片段)

官方中文文档–>https://mybatis.org/mybatis-3/zh/getting-started.html或点击–>mybatis文档mybatis3版本的源码–>https://github.com/mybatis/mybatis-3/releases或点击–>mybatis3源码文章目录1.什么是mybatis2.基础搭建使用(1)添加相关maven依赖 查看详情

学习017mybatis框架(代码片段)

一、目标Mybatis介绍Mybatis增删改查SQL注入问题介绍Mybatisxml与注解实现Mybatis分页二、Mybatis快速入门2.1Mybatis介绍MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以... 查看详情

mybatis框架学习

1.mybatis概述         mybatis是一个持久层框架,用java语言编写。         封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连... 查看详情

mybatis框架学习03

...前面本文接https://www.cnblogs.com/wushenjiang/p/12506992.html,至此mybatis的学习已经基本完成。近一个月会进行Android的冲刺学习,所以将SSM的学习暂且滞后。高级映射高级映射主要分为一对一,一对多,多对多,延迟加载等。以下分别进... 查看详情

快速学习mybatis框架

一.介绍Mybatis(主要从以下两点进行介绍)1.MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、... 查看详情

mybatis框架学习笔记(代码片段)

本篇Mybatis框架学习笔记;紧跟之前的学习Mybatis框架学习笔记(3)–>文章目录1.当出现数据库的列字段与实体类的不一致时;需要手动配置字段映射;2.两张表以上的多表映射;完成查询所有的员工(附带地查到员工对应的部门);注意有... 查看详情

mybatis框架学习

MyBatis中配置文件相关问题输入参数在传统的数据库查询操作中,在sql语句中往往需要一些参数。1、基本数据类型输入参数为基本数据类型时,不考虑占位符名称,将输入参数都设置给占位符。xml中配置信息:<?xmlversion="1.0"enco... 查看详情

mybatis框架学习——简单crud的实现

Mybatis框架学习(二)——简单CRUD的实现文章目录Mybatis框架学习(二)——简单CRUD的实现一、MybatisCRUD1.接口中定义方法2.xml实现方法3.#的使用4.测试接口5.提交事务二、万能Map1.接口中的insert2传入map参数2.在测试方... 查看详情

java:mybatis-spring框架结合学习

查看详情

框架学习笔记之mybatis

一、动态sql  通过mybatis提供的标签,实现sql语句的拼接。  1.where<selectid="findUserList"parameterType="user"resultType="user">select*fromuser<!--使用where可以自动处理第一个and--><where><iftest="id!=nullandid!=‘ 查看详情

mybatis框架学习(代码片段)

文章目录一.mybatis简介二.环境搭建1.从Xml中构建SqlSessionFactory2.XML配置文件mybatis-config.xml3.实体类,接口,mapper映射4.测试类5.万能的map三.配置解析1.环境配置(environments)2.属性(properties)3.类型别名࿰ 查看详情

关系映射web框架——漫长mybatis学习历程(代码片段)

对象关系映射型框架一.Mybatis前言二.Mybatis使用创建mybatis新项目旧项目中引入Mybatis单表操作Mybatis动态参数标识多表联合查询一对一:查询文章信息与文章所属用户一对多:查询用户以及用户的文章动态SQLif标签trim标签wher... 查看详情

mybatis学习

MyBatis是一个优秀的持久层框架,前身是ibatis。JDBC->Dbutis(QueryRunner)->jdbcTemplate:工具      框架:整体解决方案1功能简单:sql语句编写在Java代码里面:硬编码高耦合的方式Hibernate:全自动全映射ORM(ObjectRe... 查看详情

mybatis学习日志

...https://www.bilibili.com/video/av69742084?t=1279&p=2https://how2j.cn/k/mybatis/mybatis-tutorial/1087.html必读:基于框架的程序要成功运行,对于JAR包的版本,配置文件的正确性有着苛刻的要求,任何一个地方出错了,都会导致框架程序运行失败。... 查看详情

mybatis学习笔记一

  昨天看了一下mybatis,学习了一下有很多东西还不懂,但是想把一些知道的记录一下,如有错误请大家多多指点。   mybatis它是apche的一个开源项目,它以前的没名字并不是叫mybatis而是叫ibatis,2010年这个项目由apachesoftwarefound... 查看详情

mybatis框架入门到精通-入门必备的学习笔记

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java... 查看详情