Idea中使用Mybatis,详情见:
IDEA使用MyBatis【超级详细,绝对能运行】_便宜听话能加班-CSDN博客
简单使用mybatis(idea中使用) - 韦邦杠 - 博客园
MyBatis运行原理:
1.通过加载mybatis全局配置文件以及mapper映射文件初始化configuration对象和Executor对象(通过全局配置文件中的defaultExecutorType初始化);
2.创建一个defaultSqlSession对象,将configuration对象和Executor对象注入给defaulSqlSession对象中;
3.defaulSqlSession通过getMapper()获取mapper接口的代理对象mapperProxy(mapperProxy中包含defaultSQLSession对象)
4.执行增删改查:
1)通过defaulSqlSession中的属性Executor创建statementHandler对象;
2)创建statementHandler对象的同时也创建parameterHandler和resultSetHandler;
3) 通过parameterHandler设置预编译参数及参数值;
4)调用statementHandler执行增删改查;
5)通过resultsetHandler封装查询结果
实现方式:
1.实现方式一
2.实现方式二
1.概述
1.接口式编程:
原生 | Dao | ====> | DaoIpml |
MyBatis | Mapper | ====> | XxxMapper.xml |
2.SqlSession代表数据库的一次会话:用完必须关闭
3.SqlSession和connection一样,都是非线程安全的,每次使用都应该去获取新的对象
4.mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象
(将接口和xml进行定) |
EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class); |
5.两个重要的配置文件:
1.mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
2.sql映射文件:保存了每一个sql语句的映射信息 → 将sql抽取出来
6.namespace:名称空间;指定为接口的全类名id:唯一标识
7.resultType:返回值类型
8.#{id}:从传递过来的参数中取出id值
2.全局配置文件
1.dtd约束:规定标签语法规则,引入正确能够获得标签使用提示
2.properties(了解即可,使用少):mybatis可以使用properties来引入外部properties配置文件的内容
1.resource:引入类路径下的资源
2.url:引入网络路径或者磁盘路径下的资源
3.settings:运行时行为设置,包含很多设置项;
1.setting:用来设置每一个设置项
1.name:设置项名
2.value:设置项取值
4.typeAliases:别名处理器,可以为Java类型起别名(别名不区分大小写) → 建议在写返回值类型使用全类名
1.typeAlias:为某个Java类型起别名
1.type:指定要起别名的类型全类名,默认别名就是类名小写
2.alias:指定新的别名
2.package:为某个包下的所有类批量起别名
1.name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))
2.在使用批量起别名的情况下使用@Alias注解为某个类型指定新的别名
5.typeHandlers:类型处理器
6.plugins:插件
1.对以下4大对象进行操作
7.environments:环境们,mybatis可以配置多种环境,default指定使用某种环境,可以达到快速切换
1.environment:配置一个具体的环境信息,必须有两个标签transactionManager和dataSource;id代表当前环境的唯一标识
1.transactionManager:事务管理器
1.type:事务管理器的类型(默认有JDBC和MANAGED两种,都是别名,全类名可以在Configuration.class中查看);
2.自定义事务管理器:实现TransactionFactory接口,type指定为全类名
2.dataSource:数据源
1.type:数据源类型(默认有UNPOOLED| POOLED| JNDI3种,都是别名,全类名可以在Configuration.class中查看)
2.自定义数据源:实现DataSourceFactory接口,type指定为全类名
8.databaseldProvider:多数据库支持
1.type:DB_VENDOR(别名,全类名可以在Configuration.class中查看):得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql
1.property:为不同的数据库厂商起别名
1.name:数据库厂商
2.value:别名
9.mappers:将我们写好的sql映射文件注册到全局配置文件中
1.mapper:注册一个sql映射
1.resource(注册配置文件):引用类路径下的sql映射文件
2.url(注册配置文件):引入网络路径或者磁盘路径下的sql映射文件
3.class:引用(注册)接口
1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下
2.没有sql映射文件,所有的sql都是利用注解写在接口上
3.推荐:
1.比较重要的,复杂的Dao接口我们来写sql映射文件
2.不重要的,简单的Dao接口为了开发快速可以使用注解
2.packa:批量注册
1.name:包名