作者:杜永鹏
撰写时间:2022 年 3 月 6日
MyBatis简介
1、什么是mybatis
官方描述:MyBatis是一款优秀的持久层框架,它支持自定义SQL、储存过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。
1.1、MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
1.2、2013年11月迁移到Github。
2、为什么需要MyBatis?
1.帮助程序猿将数据存入到数据库中
2.方便
3.传统的JDBC代码太复杂了。简化。框架。自动化。
4.优点:
4.1、简单易学
4.2、灵活
4.3、sql和代码的分离,提高了可维护性。
4.4、提供映射标签,支持对象与数据库的orm字段关系映射
4.5、提供对象关系映射标签,支持对象关系组建维护
4.6、提供xml标签,支持编写动态sql。
3、MyBatis基本使用
3.1搭建项目引入Jar包
1.使用IDEA新建Java命令行项目
2.新建lib目录,导入jar包,并配置为项目的Library:
3.2、编写MyBatis配置文件
1.核心配置文件mybatis-conf.xml:
<?xml version="1.0" encoding="UTF-8" ?>MyBatis配置根节点
配置属性 可以在外部进行配置,并可以进行动态替换。
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
1、首先读取在 properties 元素体内指定的属性。
2、然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
3、最后读取作为方法参数传递的属性(Java代码传入)
后面加载的覆盖之前读取过的同名属性。
<properties resource="jdbc.properties">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="url"/>
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>
<!--设置-->
<settings>
<!--MyBatis 打印SQL语句到控制台-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
mybatis环境配置,mybatis支持多种配置,
尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推
default属性配置默认的环境配置id -->
mybatis的环境配置(可以写多个) id属性
配置事务管理器,在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
MANAGED –被管理 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
<transactionManager type="JDBC"/>
<!--数据源的配置 type数据源类型,有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):
UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形
POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
-->
<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>
映射器配置
mapper resource=“org/mybatis/example/BlogMapper.xml”
<mapper resource=“com/gx/mapping/SysUserMapper.xml”
<mapper resource=“com/gx/mapping/SysUserMapper2.xml”
<mapper resource=“com/gx/mapping/SysUserAssociationMapper.xml”
<mapper resource=“com/gx/mapping/SysRoleCollectionMapper.xml”
</mappers
</configuration