Mybatis的简单入门案例
一、框架的简介和Mybatis简介
框架就是一个半成品,在框架的基础上进行开发可以大大的提高开发效率,减少代码量。
框架就相当于地基,使用框架开发就相当于在地基上添砖加瓦即可。
Dbutils:数据库工具类
工具类和框架的区别:
工具类:是某种功能的代码封装
框架:是对开发某层的深度封装。
例如:Mybatis是对Dao层的深度封装
三层架构
为什么要使用分层开发?
降低开发难度,提高效率,实现模块间的解耦。
耦合:模块间的关联程度。耦合分高低。
开发追求高耦合、低内聚,降低耦合的过程就叫做解耦
二、Mybatis简介
Mybatis是一个轻量级的DAO层框架。
特点:轻量级、体积小、开发代码量少
Mybatis是基于ORM思想架构的
ORM(Object Relationship Mapping):对象数据关系映射.
映射的具体含义:(ORM是双向映射)
数据库的一张表 对应一个java类
数据库的一行记录对应一个java对象
数据库的一个字段对应一个java对象的属性
数据库的多条记录对应一个集合对象
三、Mybatis入门案例
ORM思想:
SQL语句提取到xml中或者注解,实现解耦,提高生产环境的热部署,不再使用JDBCAPI,Mybatis对JDBCAPI进行了封装。
开发步骤:
1.建立普通的maven工程
2.建库建表
3.编写java实体类
4.编写Mybatis的主配置文件:
配置Mybatis的运行环境:
<!-- 引入Mybatis主配置文件的dtd -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置mybatis运行环境:
defalut:当前mybatis的运行环境
-->
<environments default="dev">
<environment id="dev">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源:
POOLED:使用Mybatis默认提供的数据库连接池
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/gzns"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 加载Mybatis映射文件 -->
<mappers>
<mapper resource="com/wpc/mappers/UserMapper.xml"/>
</mappers>
</configuration>
5.编写Mybatis的映射文件
一个表对应一个映射文件,封装对该表的sql操作
<?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">
<!-- namespace:配置statement的命名空间,快速定位statement,对statement进行分组
注意:使用Mybatis接口映射前,namespace名可以自定义,但
使用Mybatis接口映射后:namespace=接口的全限定名
-->
<mapper namespace="com.offcn.userstatements">
<!-- 该statement的ID:namespace.id -->
</mapper>
四、Mybatis的执行原理
1.加载Mybatis主配置文件
InputStream in =Resources.getResourceAsStream("SqlMapConfig.xml");
2.主配置文件中:
<!-- 加载Mybatis映射文件 -->
<mappers>
<mapper resource="com/offcn/mappers/UserMapper.xml"/>
</mappers>
在加载主配置文件的同时会自动加载映射文件
3.调用MybatisAPI完成操作:
List<User> list =
sqlSession.selectList("statementID");
通过statementID找到要执行的SQL,发送给数据库
4.拿到数据库的执行结果,根据resultType/resultMap,把ResultSet自动封装为相应的JavaBean;
5.sql传参数要注意:
5.1如果parameterType="单个基本数据类型/String"#{任意}
5.2如果parameterType="自定义的java类/map"#{对象属性名/map的key} #{属性名}:通过调用相应的getter方法获取其值
注意:
5.2#{必须和对象的属性名一致}
五、通过IDEA创建Mybatis模板工具
2.创建MybatisUtil模板类:任意工程都可以使用
3.创建Mybatis测试基类
4.创建Mybati主配置文件模板
5.创建Mybatis映射文件模板:
六、Mybatis接口代理开发DAO
使用Mybatis之前进行DAO层开发都需要编写接口实现类,但Mybatis通过接口代理可以自动为我们生产接口对应的实现类:
使用Mybatis无需再编写Mybatis实现类
1.建立普通Maven工程
2.编写Mybatis主配置文件
3.编写实体类
4.编写接口
5.编写接口映射文件:
编译映射文件时:路径要使用/,.在resource文件中只是一个普通字符
该映射文件必须和接口对应:
namespace=接口的全限定名;
statement的ID=接口中的方法名;
parameterType=接口中的方法参数类型;
resultType=接口中的方法返回值类型:
如果返回值为集合,写其泛型类型
6.测试:
6.1引入MybatisUtil和TestBase模板类,为测试提供简介
6.2编写具体测试代码
sqlSession.getMapper(接口的类对象);
来获取Mybatis为我们自动创建的接口实现类对象
的方法参数类型;
resultType=接口中的方法返回值类型:
如果返回值为集合,写其泛型类型
6.测试:
6.1引入MybatisUtil和TestBase模板类,为测试提供简介
6.2编写具体测试代码
sqlSession.getMapper(接口的类对象);
来获取Mybatis为我们自动创建的接口实现类对象