什么是MyBatis?
MyBatis是半自动化的持久化层框架(SQL映射框架)它的功能是为了操作数据库,MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
MyBatis中的主要组成部分
Resources类:用来将主配置文件读取出来进行包装成字节流。传给SqlSessionFactoryBuilder。
SqlSessionFactoryBuilder:将读取的配置文件使用本类的.build()方法创建出一个SqlSessionFactory。
SqlSessionFactory:每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。
SqlSessionFactory创建代码示例:
publicclassMybatisUtils{
privatestaticSqlSessionFactorysqlSessionFactory;
static{
try{
Stringresource="mybatis-config.xml";
InputStreamin=Resources.getResourceAsStream(resource);
sqlSessionFactory=newSqlSessionFactoryBuilder().build(in);
}catch(IOExceptione) {
e.printStackTrace();
}
}
}
SqlSession:使用SqlSessionFactory的openSession()方法来创建SqlSession对象,对于Mybatis来讲,这么多类中,最重要的其实SqlSession。SqlSession对应着一次数据库会话。由于数据库会话不是永久的,因此SqlSession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(当然并不是说在SqlSession里只能执行一次sql,你可以执行多次,当一旦关闭了SqlSession就需要重新创建它)。
SqlSession创建代码示例:
publicstaticSqlSessionopenSession() {
returnsqlSessionFactory.openSession();
}
MyBatis配置
设置(settings)
主要作用:settings标签中包含了对 MyBatis框架系统的运行规则设置,例如要开启MyBatis的日志功能,则就需要在settings中设置开启日志的规则。
设置(settings)代码示例:
<!-- MyBatis框架运行规则配置 -->
<settings>
<!-- 开启日志 -->
<settingname="logImpl"value="STDOUT_LOGGING"/>
</settings>
类型别名(typeAliases)
主要作用:用来给实体类设置别名(可以不用设置resultMap来设置)
类型别名(typeAliases)代码示例:
<typeAliases>
<!-- 给每一个实体类设置别名 -->
<typeAliastype="com.apesource.entity.Employee"alias="Employee"/>
<typeAliastype="com.apesource.entity.EmployeeParam"alias="EmployeeParam"/>
<!-- 给指定包下的所有实体类设置别名 -->
<packagename="com.apesource.entity"/>
</typeAliases>
环境配置(environments)
主要作用:environment 元素体中包含了事务管理和连接池的配置
环境配置(environments)代码示例:
<!-- 环境列表 -->
<!-- default:设置当前使用的环境environment id -->
<environmentsdefault="development">
<!-- 环境1(开发) -->
<environmentid="development">
<!-- 事务管理器:采用JDBC事务 -->
<transactionManagertype="JDBC"/>
<!-- 数据源(数据库连接池) -->
<!-- type设置为pooled,启动数据库连接池 -->
<dataSourcetype="POOLED">
<!-- 数据库连接参数 -->
<propertyname="driver"value="${driver_class}"/>
<propertyname="url"value="${jdbc_url}"/>
<propertyname="username"value="${db_username}"/>
<propertyname="password"value="${db_password}"/>
</dataSource>
</environment>
</environments>
映射器(mappers)
主要作用: mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息
映射器(mappers)代码示例:
<!-- 映射器列表 -->
<mappers>
<!-- SQL映射文件 -->
<mapperresource="com/apesource/dao/mapper/EmployeeMapper.xml"/>
<mapperresource="com/apesource/dao/mapper/OrderMapper.xml"/>
</mappers>
MyBatis XML 映射器
1.常用节点作用总结
select :select标签对应的sql语句也是相同的select语句,其作用是用来查询数据库中的数据
update:update标签的作用是用来更新数据库中指定的数据
delete:delete标签的作用是用来删除数据库中指定的数据
insert:insert标签的作用是用来添加数据库中对应表下字段的数据
2.常用属性作用总结
id 属性:对应的映射文件Mapper接口下的操作的方法名
resultType 属性:执行这个操作后返回结果的类型,对应Mapper映射接口下的方法返回值
parameterType 属性:执行操作时候需要传入的参数的类型,Mapper映射接口下的方法传入的参数类型
useGeneratedKeys属性:对于执行添加数据操作,添加完成后需要返回的主键编号,需要将其设置为true才能接收其返回的主键值
keyProperty属性:与useGenerratedKeys属性配合使用,设置返回的主键值是对应类下的哪一个属性名