MyBatis框架

MyBatis是一个持久层框架,简化了JDBC的操作,实现了对象与数据库的ORM映射。本文详细介绍了MyBatis的组成部分,包括SqlSessionFactory、SqlSession、配置文件和映射文件,以及MyBatis的环境搭建、SQL操作、缓存机制、注解使用和动态SQL。还涵盖了分页查询和防止SQL注入等实用功能。
摘要由CSDN通过智能技术生成

一,什么是MyBatis

        MyBatis是一个持久层框架,它属于ORM关系型映射,由于它内部封装了JDBC,就可以替代JDBC的操作,对于JDBC的操作来说,可以简化其复杂繁琐的工作(建立连接、设置占位符、PreparedStatement-预编译sql、获取结果集等一系列操作 )。

        ORM(O/R - Mapping 对象关系映射),是一种把内存中的对象保存到关系型数据库的技术。用它封装数据库访问的细节。采用元数据(XML)的方式来描述对象-关系(数据库表)的映射细节,可以使得ORM充当任何一个Java应用业务层到数据库之间的桥梁

       1, MyBatis与ORM的区别

        mybatis属于半orm,因为sql需要自己书写。与其他比较标准的 ORM 框架(比如 Hibernate )不同, mybatis 并没有将java对象与数据库关联起来,而是将java方法与 sql 语句关联起来,mybatis 允许用户充分利用数据库的各种功能,例如存储、视图、各种复杂的查询以及某些数据库的专有特性。

        自己写sql语句的好处是,可以根据自己的需求,写出最优的 语句。灵活性高。但是,由于是自己写sql语句,导致平台可移植性不高。

二,MyBatis的组成,三大要素

        1.核心接口和类(SqlSessionFactory 和 SqlSession)

 SqlSessionFactory

        SqlSessionFactory 是MyBatis中的核心对象,是数据库映射关系经过编译之后的内存镜像,而它的作用就是用来创建SqlSession。 可以根据上层对象SqlSessionFactoryBuilder对象来进行创建

        SqlSessionFactoryBuilder则可以通过核心(主)配置文件 或者Java代码定义好的配置类来构建。

        SqlSessionFactory ,是线程安全的,它一旦被创建,在应用的运行期间都会存在,如果我们多次创建同一个数据库的SqlSessionFactory,会导致数据库资源被消耗殆尽。因此通常情况下,同一个数据库都只会对应一个SqlSessionFactory ,所以在构建SqlSessionFactory 实例时通常会使用单例模式

SqlSession

        SqlSession对象是另一个核心对象,他是应用程序和持久层之间执行交互操作的单线程对象--其作用主要是执行持久化操作。每一个线程都应拥有一个自己的SqlSession实例,并且该实例是不共享的,同时也是线程不安全的,SqlSession它的使用范围最好限制在一次请求或者一个方法中。绝对不能够把其放在一个类的静态字段(属性),注意使用SqlSession对象后,要注意关闭资源。

        2,核心(主)配置文件 MyBatis.cfg.xml

(1),typeAliases--别名配置,允许使用指定包中的类名作为实体类的类型

<typeAliases>
	<package name="com.project.bean"/>
</typeAliases>

(2),数据源配置


   <environments default="dev">  

        <environment id="dev">  

            <transactionManager type="JDBC"></transactionManager>  

            <dataSource type="POOLED">  
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:端口号/数据库名称?characterEncoding=utf-8&amp;allowMultiQueries=true"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
            </dataSource>  

        </environment>  

    </environments>  

(3),settings--设置标签

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

(4),mappers--映射文件的所在位置

​
<mappers>
<!--	根据包名进行扫描-->
		<package name="com.project.dao"/>
	</mappers>

​

        3,SQL映射文件(mapper.xml)

(1),用来映射持久层接口,因此需要映射文件和它所对应的接口同名

(2),导入映射文件前,需要在resources目录下,创建和持久接口所在包同名的目录,由于resources的特殊性,创建时用 -- / -- 表示创建的为层级目录,比如com/project/dao(创建的是com、project、dao,这三个有层级关系的目录)

(3),导入后ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值