Mybatis入门学习记录

Mybatis

作用

JDBC访问数据库时,建立连接,Statement, JDBC相关异常处理等繁琐和枯燥的操作,可以交给Mybatis来做,自己只需要提供SQL语句,关注在增删改查等操作层面上。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录

预备知识

对象关系映射 ORM 思想
  • 是一种为了解决面向对象与关系数据库存在的互不匹配问题的技术。

  • 简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象自动持久化到关系型数据库中

就是建立对象属性名与表字段列名之间的映射关系

面向对象概念面向关系概念
对象表的行(记录)
属性表的列(字段)

初始的基本操作

环境配置

使用 Maven 来构建项目

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
 <version>3.4.5</version>
</dependency>
基本操作
  • 在resources目录下创建mybatis的主配置文件mybatis-config.xml

    其作用主要是提供连接数据库用的驱动,数据库名称,编码方式,账号密码

XML 配置文件中包含了对 MyBatis 系统的核心设置

包括获取数据库连接实例的数据源(DataSource)

以及决定事务作用域和控制方式的事务管理器(TransactionManager)

注意 XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。

<?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>
    <!--引入外部配置文件-->
    <properties resource="db.properties"/>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <typeAliases>
        <package name="entity"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper class="dao.UserMapper"/>
        <mapper class="dao.StudentMapper"/>
        <mapper class="dao.TeacherMapper"/>
    </mappers>

</configuration>
  • 从 XML 文件中构建 SqlSessionFactory 的实例

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
常规操作
  • 安装项目实际情况书写
    • 关键区别在使用的数据库类型对应的驱动,账号密码之类与 需要mapper的东西
  • 写一个MybatisTools 工具类,做一些初始化的工作,并且提供getSqlSession()方法

映射SQL语句

一个sql语句既可以通过 XML 定义,也可以通过注解定义

通过 XML 来映射sql语句

例子:

<?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="org.mybatis.example.BlogMapper">
    
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
    
    
</mapper>

namespace命名空间的作用有两个,

一个是利用更长的全限定名来将不同的语句隔离开来,

同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。

长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。

调用映射语句

  1. //在命名空间()中定义了一个名为 “selectBlog” 的映射语句,
    //这样你就可以用全限定名
    //“org.mybatis.example.BlogMapper.selectBlog” 
    //来调用映射语句
    
    Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
    //该命名可以直接映射到在命名空间中同名的映射器类
    
  2. //不依赖于字符串字面值,会更安全一点;
    //其次,如果你的 IDE 有代码补全功能,那么代码补全可以帮你快速选择到映射好的 SQL 语句
    BlogMapper mapper = session.getMapper(BlogMapper.class);
    Blog blog = mapper.selectBlog(101);
    
通过 注解 来映射sql语句

例如:

package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}
  • 使用注解来映射简单语句会使代码显得更加简洁,

  • 但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。

  • 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

XML 映射器

MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。

SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出)

  • cache – 该命名空间的缓存配置。
  • cache-ref – 引用其它命名空间的缓存配置。
  • resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
  • sql – 可被其它语句引用的可重用语句块。
  • insert – 映射插入语句。
  • update – 映射更新语句。
  • delete – 映射删除语句。
  • select – 映射查询语句。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值