MyBatis的创建
1. 框架【半成品】
-
生活中“框架”
-
毛坯房:装修后直接使用
-
手抓饼:加热后直接食用
-
-
程序员框架
-
Spring:大管家
-
SpringMVC:表示层
-
MyBatis:是半自动化ORM,持久化层框架【dao层|mapper层半成品】
-
2. Mybatis简介
-
Mybatis前身Ibatis, iBatis3.x以后更名为Mybatis
-
Mybatis 是一个 半自动的ORM(Object Relation Mapping)【持久化层】框架
-
Hibernate全自动ORM框架
-
-
ORM【Object Relation Mapping】:对象关系映射
-
将JavaBean【POJO】与数据库中表建立映射关系【通过配置文件或注解形式建立关系,优势:操作POJO可以直接影响数据库表中的数据】
-
-
POJO:Plain Old Java Objects【JavaBean】
3. 搭建Mybatis框架【helloworld】
-
3.1 搭建框架思路
-
导入jar包
-
编写配置文件【注解】
-
导入jar包
-
mybatis-3.5.1.jar
-
mysql-connector-java-5.1.7-bin.jar
-
-
建表&pojo
-
-- 创建表
CREATE TABLE tbl_employee(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
gender CHAR(1)
);
-
-
编写核心配置文件
-
核心配置文件名称可以任意定义,建议:mybatis-config.xml。配置文件位置:类路径下【类似src路径】
-
示例代码
<?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> <!-- 设置数据库连接环境--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db0317ssm"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 加载映射文件--> <mappers> <mapper resource="EmployeeMapper.xml"/> </mappers> </configuration>
-
-
编写映射配置文件
-
编写映射文件规定
-
映射文件名与接口Mapper名一致
-
映射文件中namespace与接口Mapper全类名一致
-
映射文件中编写SQL语句的id与接口Mapper中方法名一致
-
-
示例代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.atguigu.mapper.EmployeeMapper"> <select id="selectEmpById" resultType="com.atguigu.pojo.Employee"> SELECT id,last_name,email,gender FROM tbl_employee WHERE id=#{id} </select> </mapper>
-
-
使用核心类库【SqlSession】
-
创建SqlSessionFactory工厂类
-
通过SqlSessionFactory工厂类,创建SqlSession对象
-
通过SqlSession中getMapper(Class Mapper)获取代理对象
-
调用接口中的方法
-
4. Mybatis中核心配置文件【mybatis-config.xml】
-
概述:MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息
-
常用标签
-
properties:设置数据库中属性资源配置
<properties > <property name="driver" value="com.mysql.jdbc.Driver"/> </properties> <properties resource="db.properties"></properties> #db.properties #key=value db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost:3306/db0317ssm db.username=root db.password=root
-
用法
-
-
settings:设置Mybatis行为
-
mapUnderscoreToCamelCase:开启下划线与驼峰式命名自动映射,注意:只能自动映射【a_bc与aBc】,默认false,设置true,则开启自动映射。
-
-
typeAliases:为Pojo设置别名
<typeAliases> <!-- <typeAlias type="com.atguigu.pojo.Employee" alias="employee"></typeAlias>--> <!--为当前包下所有pojo设置类型别名,别名类名【不区分大小写,建议使用小写】--> <package name="com.atguigu.pojo"/> </typeAliases>
-
environments:设置数据库连接环境
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments>
-
mappers:加载映射文件
<mappers> <!--<mapper resource="EmployeeMapper.xml"/>--> <!--加载当前包下所有映射文件--> <package name="com.atguigu.mapper"/> </mappers>
-
总结:核心配置文件中标签顺序有要求,按照官方文档推荐顺序使用即可。
5. 日志框架
-
作用:将程序中重要细节记录并显示。
-
log4j使用步骤
-
导入log4j.jar
-
编写配置文件:log4j.properties或log4j.xml
-
6.映射文件
-
概述:MyBatis 的真正强大在于它的语句映射,如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。
-
SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):
-
cache
– 该命名空间的缓存配置。 -
cache-ref
– 引用其它命名空间的缓存配置。 -
resultMap
– 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。 -
parameterMap
– 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。 -
sql
– 可被其它语句引用的可重用语句块。 -
insert
– 映射插入语句。 -
update
– 映射更新语句。 -
delete
– 映射删除语句。 -
select
– 映射查询语句。
-
-
SQL语句常用属性
-
resultType:设置结果集类型【结果集映射对象,全类名或别名】
-
注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。
-
resultType 和 resultMap 之间只能同时使用一个。
-
-
resultMap:设置resultMap关联id
-
id:设置Sql语句唯一标识
-
parameterType:将会传入这条语句的参数的类全限定名或别名。这个属性是可选的。
-