一、什么是mybatis?
MyBatis 是一款优秀的半自动的ORM持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
二、MyBaits与JDBC
JDBC核心对象
DriverManager,数据库驱动管理对象
Connection,数据库连接对象
Statement | PrepareStatement ,操作数据库SQL语句对象
ResultSet,结果集对象
MyBaits核心对象
SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection
Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。
MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息
ResultHandler对象,用户返回结果集合,封装成最红想要的数据类型,可以自定义返回类型
三、MyBaits执行流程
mybatis核心组件:
①SqlSessionFactoryBuilder:构建SqlSessionFactory的构建器,采用了分布构建方式进行构建
②SqlSessionFactory:生产SqlSession的工厂(工厂设计模式),在项目的生命周期应该以单例的形式进行存在
③SqlSession:mybatis围绕SqlSession进行工作,
提供:发送执行sql语句;
获取mapper映射器;
控制事务
④mapper映射器:接口+映射文件(注解或者xml)xml常用
注意:在xml中&是特殊符号,有具体的语义,要使用&表示连接
mybatis不支持方法重载
因为MyBatis动态代理寻找策略是:全限定名+方法名,不涉及参数,所以MyBatis不支持方法重载。
方法重载:方法名相同,参数列表不同
mybatis-config.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核心配置文件--> <configuration> <!--通过 properties文件进行配置datasource数据源--> <properties resource="datasource.properties"/>
<!--settings:会改变mybatis的运行时行为 logImpl:指定mybatis所有日志的具体实现,未指定时将自动查找 mapUnderscoreToCamelCase:驼峰映射 autoMapperBehavior:指定mybatis应如何自动映射列到字段或属性 (NONE:关闭自动映射;PARTIAL只会自动映射没有定义嵌套结果映射的字段;FULL会自动映射任何).....--> <settings> <!-- 开启驼峰映射 默认是关闭的--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
<!--类型别名:不区分大小写--> <typeAliases> <!-- 针对类型单独进行别名配置--> <typeAlias type="com.monster.pojo.Student" alias="student"/> <!-- 位于指定包下指定别名,别名即为类的简单名称(mybatis 的别名不区分大小写)--> <package name="com.monster.mapper"/> <package name="com.monster.pojo"/> </typeAliases> <!--类型处理器:处理Java对象属性和数据表字段类型不一致的类型转换 BooleanTypeHandler FloatTypeHandler BigDecimalTypeHandler EnumTypeHandler: 数据库兼容的字节流类型【VARCHAR 或任何兼容的字符串类型,用来存储枚举的名称(而不是索引序数值)】 .....等等 --> <typeHandlers> <!-- 单独加载--> <typeHandler handler="com.monster.typehandler.GenderTypeHandler" javaType="com.monster.enums.Gender"/> <!--包加载--> <!-- <package name="com.monster.typehandler"/>--> </typeHandlers>
<!-- 环境配置 --> <environments default="development"> <environment id="development"> <!-- 事务管理器 --> <transactionManager type="JDBC"/> <!-- 数据源 --> <dataSource type="POOLED"> <!-- 连接驱动--> <property name="driver" value="${driverClassName}"/> <!-- 在xml中&是特殊符号,有具体的语义,要使用&表示连接--> <property name="url" value="jdbc:mysql://localhost:3306/studentmanage?userUnicode=true&characterEncoding=UTF8"/> <property name="username" value="longhj"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments>
<!-- 映射器 --> <mappers> <!--<mapper resource="com/monster/mapper/StudentMapper.xml"/>--> <package name="com/monster/mapper"/> </mappers>
</configuration>
标签:xml,框架,对象,mybatis,SqlSession,SQL,MyBatis From: https://www.cnblogs.com/longhj/p/17939902