什么是Mybaits?

什么是Mybaits?

Mybaits

半自动orm持久层框架,免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

Mybaits框架核心配置文件

  1. configuration 根节点元素
  2. peopreties 包含数据库连接相关参数
  3. settgs 设置Mybaits框架的运行时行为
  4. environments 可配置多组运行环境
  5. environment 配置运行环境(事务管理,数据源…)
  6. mappers 配置SQL映射文件的位置
  7. mapper mappers的子元素

SqlSessionFactorybuilder

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的.而使用SqlSessionFactorybuilder的原因就是把SqlSessionFactory 这个对象交给builder来创建,也就是创造者模式.

SqlSessionFactorybuilder可以拆分为3部分

  1. SqlSessionFactorybuilder:工人
  2. SqlSessionFactory:工厂
  3. SqlSession:产品
    工厂(SqlSessionFactory)通过工人(SqlSessionFactorybuilder)
    得到产品(SqlSession)
public class Usermapeerutil {
    static SqlSession sqlSession = null;
    public static SqlSession getSqlSession(){
        String resource="mybaits-config.xml";
        InputStream inputStream=null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        }catch (IOException e){
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }

作用域和生命周期

  1. SqlSessionFactorybuilder:
    SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量),也就是方法执行完毕,它被摧毁
  2. SqlSessionFactory:
    SqlSessionFactory 的最佳作用域是应用作用域,它是一直存在的,直到你整个程序运行完毕,使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。
  3. SqlSession:
    SqlSession的最佳的作用域是请求或方法作用域,也就是当你每次发起请求,都会打开一个SqlSession,当请求完成后将它关闭
    每个线程都应该有它自己的 SqlSession 实例,SqlSession 的实例不是线程安全的,所以它是不能被共享的.

Sql映射

MyBatis 提供的所有特性都可以利用基于 XML 的映射语言来实现,这使得 MyBatis 在过去的数年间得以流行。

  1. cache – 该命名空间的缓存配置。
  2. cache-ref – 引用其它命名空间的缓存配置。
  3. resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
  4. sql – 可被其它语句引用的可重用语句块。
  5. insert – 映射插入语句。
  6. update – 映射更新语句。
  7. delete – 映射删除语句。
  8. select – 映射查询语句
<?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">
<!--
  根据namespace查找对应创建dao接口
  根据方法名称查找对应的sql语句
-->
<mapper namespace="com.cn.mapper.UserMapper">
    <!--
        每一种sql语句对应每一种标签
        resultType 返回值类型
    -->
    <select id="login" resultType="com.cn.pojo.User">
        select * from user where number=#{arg0} and password=#{arg1}
    </select>
</mapper>

(还在学习中,第一次发文章,勿喷,有不足之处还望指点)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值