Mybatis一

本文详细介绍了MyBatis框架的基本架构,包括配置文件的作用、SqlSessionFactory的创建过程、SqlSession的使用方法,以及Executor执行器的工作原理。同时,还探讨了Mapper动态代理的实现方式及其规则。
摘要由CSDN通过智能技术生成

Mybatis架构

1、  mybatis配置
    SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
    mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。
    此文件需要在SqlMapConfig.xml中加载.

2、  通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
3、  由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
4、  mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,  
    一个是基本执行器、一个是缓存执行器。
5Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。  
    mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
6Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor
    通过  Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc
    编程中对preparedStatement设置参数。
7Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过
    Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程
    中对结果的解析处理过程。

mybatis核心包、依赖包、数据驱动包

ant-1.9.6.jar
ant-launcher-1.9.6.jar
asm-5.2.jar
cglib-3.2.5.jar
commons-logging-1.2.jar
javassist-3.21.0-GA.jar
junit-4.9.jar
log4j-1.2.17.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
mybatis-3.4.4.jar
mysql-connector-java-5.1.7-bin.jar
ognl-3.1.14.jar
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
    <!-- id:sql语句唯一标识 parameterType:指定传入参数类型 
    resultType:返回结果集类型 
    #{}:启动占位作用,如果传入的是基本类型,那么名称随意 -->

    ${}拼接符:字符串原样拼接如果传入的是基本类型,那么${}中的变量名必须是value
    注意:使用拼接符有可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格

会话工厂

    private SqlSessionFactory sqlSessionFactory =  null;

    @Before
    public void create  SqlSessionFactory() throws Exception {
        // 配置文件
        String resource = "SqlMapConfig.xml";
        // 通过流将核心配置文件读取进来
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 通过核心配置文件输入流来创建会话工厂
        sqlSessionFactory = new SqlSessionFactoryBuilder()
                    .build(inputStream);
        // 通过工厂创建会话
            sqlSession = sqlSessionFactory.openSession();
            // 第一个参数:调用的sql语句= namespace.Id
            User user = sqlSession.selectOne("test.findUserById", 10);
    }

Mapper动态代理方式

映射文件

<!-- 
mapper接口代理实现编写规则:
    1. 映射文件中的namespace要等于接口的全路径名称
    2. 映射文件中sql语句的id要等于接口的方法名称
    3. 映射文件中传入参数类型要等于接口方法的传入参数类型
    4. 映射文件中返回结果集类型等于接口方法的返回值类型
 -->
<mapper namespace="com.bf.mapper.UserMapper">

通过getMapper方法实例化接口

session = factory.openSession();
            UserMapper mapper = session.getMapper(UserMapper.class);

加载映射文件

        <!-- 
             使用class属性引入接口的全路径名称
             使用规则:1. 接口名称和映射文件名称除扩展名外要完全相同
                    2. 接口和映射文件要放在同一个目录下
         -->
        <mapper class="com.bf.mapper.UserMapper"/>

    // 动态代理形式中,如果返回结果集为List,那么mybatis会在生成的实现类中自动使用selectList方法
    List<User> findUsersByName(String name);

SqlMapConfig.xml配置文件

configuration 配置
properties 属性
settings 设置
typeAliases 类型命名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider 数据库厂商标识
mappers 映射器
    <typeAliases>
    <!-- 使用包扫描的方式批量定义别名(按java命名规则来) -->
        <package name="com.bf.pojo"/>
    </typeAliases>
    <mappers>
        <!-- 使用包扫描的方式批量引入mapper接口 -->
        <package name="com.bf.mapper"/>
    </mappers>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值