1. myBatis的介绍:
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除
了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索。MyBatis可以使用简单的
XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的
Java对象)映射成数据库中的记录。
jdbc --> connection statement preparedStatement ResultSet --封装结果集/sql
dbuti --> connection beanHandel BeanListHandler 能自动封装结果集 sql语句还在代码中,只能做单表的数据封装
(mybatis)-->不需要JDBC里面的接口,SQL统一写在配置文件,还能自动封装数据,支持多个表,支持缓存
需要SQL语句
hibernate --》不需要SQL语句,太重了
2. mybatis快速入门
a. 添加jar包
mybatis
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
log4j-1.2.16.jar
mybatis-3.1.1.jar
slf4j-api-1.6.2.jar
slf4j-log4j12-1.6.2.jar
引用myeclipse自带的Junilt包
mysql驱动
mysql-connector-java-5.1.7-bin.jar
b.在总的配置文件中需要配置数据源,同样的数据源可以写死,也可以通过外置配置文件导入。
写死方式:
<
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/mybatis"
/>
<
property
name
=
"username"
value
=
"root"
/>
<
property
name
=
"password"
value
=
"jrh0617"
/>
</
dataSource
>
</
environment
>
</
environments
>
通过属性文件配置数据源的方式:
<!-- 加载属性文件 -->
<
properties
resource
=
"classpath:db.properties"
>
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</
properties
>
<
settings
>
<!-- 设置默认日志记录log4j -->
<
setting
name
=
"logImpl"
value
=
"LOG4J"
/>
</
settings
>
<!-- 和spring整合后 environments配置将废除-->
<
environments
default
=
"development"
>
<
environment
id
=
"development"
>
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<
transactionManager
type
=
"JDBC"
/>
<!-- 数据库连接池,由mybatis管理-->
<
dataSource
type
=
"POOLED"
>
<
property
name
=
"driver"
value
=
"${jdbc.driver}"
/>
<
property
name
=
"url"
value
=
"${jdbc.url}"
/>
<
property
name
=
"username"
value
=
"${jdbc.username}"
/>
<
property
name
=
"password"
value
=
"${jdbc.password}"
/>
</
dataSource
>
</
environment
>
</
environments
>
配置文件
db.properties内容如下
:
jdbc.driver=
com.mysql.jdbc.Driver
jdbc.url=
jdbc\:mysql\://localhost/mybatis
jdbc.username=
root
jdbc.password=
jrh0617
c.通过mappers标签引入mapper标签:
<
mappers
>
<!-- 资源文件用/寻找路径 -->
<!-- <mapper resource="XML文件的包名+文件名"/> -->
<!-- <mapper resource="jrh/mybatis/test2/UserMapping.xml"/> -->
<!-- 通过注解方式,所以只要引入带注解的实体类路径就好 -->
<
mapper
class
=
"jrh.mybatis.test3.UserMapper"
></
mapper
>
</
mappers
>
d.在**Mapping.xml子配置文件中配置相对用dao访问层抽象方法所对应的方法SQL
方法实体:
String resource =
"主配置文件.xml"
;
//加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory =
new
SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
//映射sql的标识字符串
String statement =
"jrh.mybatis.test1.UserMapper"
+
".selectUser"
;//找到该命名空间下,ID为
selectUser的标签。
//执行查询返回一个唯一user对象的sql
User user = (User) session.selectOne(statement, 1);
子配置文件:
<
mapper
namespace
=
"对应抽象类的类路径"
>
<!-- 根据ID查询users表中对应的记录返回一个User对象 -->
<
select
id
=
"selectUser唯一标识"
parameterType
=
"int传入参数的类型"
resultType
=
"jrh.mybatis.test1.User即SQL返回值对应的类型"
>
select * from users where id = #{id}
</
select
>
</
mapper
>
特别注意::
1. 在主配置文件的头部的文档类型必须是
configuration,包括.dtd文件也是config类型的
2.在子配置文件中的头部文档类型必须输mapper型的,同样包含dtd文件
3.在对此配置文件的类型,返回值类型,一定要搞清楚是最终什么类型
主配置文件头部:
<?
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
>
自配置文件头部:
<?
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"
>
4.关于程序读取配置文件:
通过
Resources等获取文件的位置--》再通过
SqlSessionFactoryBuilder创建
SqlSessionFactory--》创建能执行SQL的SqlSession