关闭

MyBatis(3)--MyBatis一些概念

标签: mybatis
105人阅读 评论(0) 收藏 举报
分类:

1.资料

1>.下载MyBatis

2>.MyBatis项目参考

3>.MyBatis-Sping项目参考


2.MyBatis的基本构成

1>.SqlSessionFactoryBuilder

①.用于根据配置信息或者代码生成工厂接口(SqlSessionFactory);

2>.SqlSessionFactory

①.依靠工厂生成会话(SqlSession);

②.这是一个接口,而不是实现类;

③.两种方式创建:

XML(推荐):
<?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>
    <typeAliases>
        <typeAlias type="com.anlw.model.Role" alias="role" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="autoCommit" value="true"/>
            </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="roleMapper.xml" />
    </mappers>
</configuration>
  • (1).其中别名typeAliases只针对实体类设置别名,比如在mapper.xml中的parameterType和resultType属性使用,经测试,对于namespace属性不适用;
  • (2).environments下可以有多个environment节点,用于配置多个数据库连接信息,可以通过default属性选择使用哪个;
  • (3).这个配置事务自动提交不起作用,需要在代码级别设置,sqlSessionFactory.openSession(true),这个方法是重载,默认不加参数为不自动提交;
  • (4).mapper的路径注意:。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
代码(不推荐):
public static SqlSessionFactory getSqlSessionFactory(){
        //构建数据库连接池
        PooledDataSource dataSouce = new PooledDataSource();
        dataSouce.setDriver("com.mysql.jdbc.Driver");
        dataSouce.setUrl("jdbc:mysql://localhost:3306/mybatis");
        dataSouce.setUsername("root");
        dataSouce.setPassword("123456");
        //构建数据库事务方式
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建数据库运行环境
        Environment environment = new Environment("development", transactionFactory, dataSouce);
        //构建Configuration对象
        Configuration configuration = new Configuration(environment);
        //注册一个MyBatis的上下文别名
        configuration.getTypeAliasRegistry().registerAlias("firstRole", Role.class);
        //加入一个映射器,下面的映射器必须使用注解,不可以使用配置文件
        configuration.addMapper(RoleMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        return sqlSessionFactory;
    }

3>.SqlSession

①.直接通过命名信息去发送sql去执行并返回结果,SqlSession层可以通过insert,update,select和delete等方法带上sql的id来操作XML中配置好的sql;

session.insert("com.anlw.mapper.RoleMapper.insertRole", role);

②.可以获取Mapper的接口(映射器),让映射器通过命名空间和方法名称找到对应的sql,发送给数据库执行后返回结果;

4>.SQL Mapper(映射器)

①.由Java接口和XML文件或注解构成,需要给出对应的sql和映射规则,负责发送sql去执行并返回结果;

②.两种方式创建:

XML(推荐)
代码(不推荐)
public interface RoleMapper {
    @Select("select id,role_name as roleName,note from t_role where id = #{id}")
    Role getRole(Long id);
}

③.如果mapper使用注解,那么获取SqlSessionFactory的方式必须采用代码的方式,而不能采用xml配置的方式;


3.MyBatis核心组件生命周期

1>.SqlSessionFactoryBuilder

①.它的生命周期只存在于方法局部,生成SqlSessionFactory后就可以回收丢弃;

2>.SqlSessionFactory

①.存在于MyBatis应用的整个生命周期中;

②.应该为单例模式,一个数据库只对应一个SqlSessionFactory;

3>.SqlSession

①.生命周期为请求数据库处理事务的过程;

②.线程不安全对象;

③.保证事务的一致性;

④.用完在finally中及时关闭;

4>.Mapper

①.生命周期在一个SqlSession事务方法之内,属于方法级别的;

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Mybatis 框架使用的最核心内容(一):Mybatis的特点和映射管理

mybaits应用开发,纯干货
  • qq_29233973
  • qq_29233973
  • 2016-05-16 21:03
  • 3793

Spring MVC的基本概念

刚刚学习Spring MVC, 在学到它的基本概念的时候,发现有点被搞晕了,对于初学者来说对概念不是很熟悉,确实容易晕。因此,我讲它的基本概念写成博客,让自己有个更深的印象,以后需要回顾的时候也方便,...
  • bingozhang24
  • bingozhang24
  • 2015-12-05 11:40
  • 1725

(读书笔记)mybatis (三)-----environments详解

Mybatis可以配置成适应多种环境,这种机制有助于将SQL映射应用于多种数据库之中,显示情况下有多重理由需要这么做。例如:开发,测试和生产环境需要不同的配置;或者共享相同的Schema的多个上产数据...
  • mqf163
  • mqf163
  • 2016-09-12 15:48
  • 4374

【系列】使用springmvc+mybatis创建Web应用(一)—— 相关概念,工具,搭建Web应用

前言springmvc和mybatis是当前最流行的创建java web项目的框架组合,有了它们就能创建一个简单的Web项目。笔者将相关内容以系列文的形式撰写,本文将详细演示如何搭建起一个最简单的we...
  • xialei199023
  • xialei199023
  • 2017-03-18 10:34
  • 921

MyBatis一些基本的概念

前言这篇文章参考了《MyBatis3开发文档》记录了初学时碰到的一些问题
  • sgls652709
  • sgls652709
  • 2015-10-19 22:50
  • 678

MyBatis级联探讨第一篇——概念和模型

谈谈MyBatis级联,文章尽量具体一些。 一、概述 关于MyBatis级联有三种: association  :一对一的关联 collection   : 一对多的关联 discriminator ...
  • ykzhen2015
  • ykzhen2015
  • 2016-04-26 13:55
  • 1421

mybatis的概念介绍

前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架。大大简化了,数据库操作中的常用操作。下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用。 1.1...
  • alu842517686
  • alu842517686
  • 2017-03-27 22:25
  • 186

mybatis学习(一)基本概念

一、mybatis简介 Mybatis前身是ibatis,是apache的一个开源项,2010年这个项目由apache software foundation 迁移到了google ...
  • Mooner_guo
  • Mooner_guo
  • 2015-11-01 11:17
  • 478

mybatis基本概念

MyBatis是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的JDBC冗余代码,并提供了一个简单易用的API和数据库交互。 M...
  • suwu150
  • suwu150
  • 2016-10-21 23:20
  • 1326

Mybatis入门笔记--一些概念

开启一个session需要使用到SqlSessionFactory,而SqlSessionFactory是由SqlSessionFactoryBuilder创建的。具体的代码就是:String res...
  • laiwenqiang
  • laiwenqiang
  • 2017-05-08 20:30
  • 127
    个人资料
    • 访问:51282次
    • 积分:691
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论