Mybatis

1.历史

Apache Google GitHub
IBatis Mybatis Mybatis

2.Mybatis的作用

1 它支持普通的SQL 操作 以及 存储过程的调用
2 它是一个高级的ORM框架 (以面向对象的思想操作数据库)
3 它封装了几乎的jdbc操作 以及参数的手工设置
4 自动检索结果集(自动把结果集转换成对象 甚至关联的对象)

3.MyBatis 框架的构成

1 实体bean 封装数据信息
2 SQL 定义文件 封装SQL语句的XML
3 主配置文件 定义连接数据库的信息的 加载sql定义文件 等
4 框架的API 涉及到SqlSession对象的创建 还有SqlSession 对应的API 主要完成增删改查

4.以根据id 查询银行账户为例 编写Mybatis程序

1 建立一个项目 导入jar包(mybatis.jar ojdbc6.jar)
2 根据表 建立对应的实体类
3 编写SQL 定义文件 (拷贝sql定义的模板到一个包中)




4 拷贝主配置文件模板到src下 修改对应的信息
5 使用Mybatis的API 获取SqlSession 对象 使用这个对象完成对应的sql操作

工具类
public class SqlSessionUtil {
private static SqlSessionFactory ssf;

static {
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
// 得到一个SqlSessionFactory 类型的对象
InputStream inputStream = Bank.class.getClassLoader().getResourceAsStream("sqlmap-config.xml");
ssf = ssfb.build(inputStream);

}

public static SqlSession getSqlSession(){
try {
return ssf.openSession();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;

}

}

5.Mapper 映射器 ---- 根据规则设计DAO接口 可以自动产生实现类

1 DAO 接口的方法名 必须和 SQL 定义文件中 SQL语句的id保持一致
2 接口方法的返回值类型 一般和resultType 保持一致
查询语句如果返回单值 那使用 resultType
查询语句如果可能返回多个值 则使用List<resultType对应的类型>
对DML(insert delete update) 可以是返回void 也可以返回int 推荐返回int
3 接口方法的参数类型 和 parameterType 保持一致
如果没有 parameterType 则参数可以任意
4 SQL 定义文件中的namespace 必须是 包名.接口名

Mybatis 多个参数的处理

1 通过Map 或者 对象类型 包装多个参数
2 通过在sql 语句中 使用 index 对参数进行编号 编号从 0开始
3 也可以使用 param1 等对参数进行编号 编号从 param1 开始
4 @Param("参数名") 设置在接口方法的参数上

分页的实现

1 rownum
按照acc_money 排序 一页显示 X 条 显示 第 n 页数据
pageSize:每页显示条数 pageNumber:当前页

使用分页插件 ---- 根据某个字段排序 查询表中的所有数据

a.拷贝分页插件的jar包(pageHelper.jar jsqlparser.jar) 到lib
b.在主配置文件中配置 分页插件的拦截器
c.使用分页插件的api 完成分页查询

select * from (
select tmp_page.*, rownum row_id from (
select * from xdl_bank_account_30 order by acc_money )
tmp_page where rownum <= ? ) where row_id > ?

当数据库中的字段 表 实体类中属性不对应时如何解决?

1 使用字段的别名

2 使用resultMap 让数据库字段和实体类中的属性对应

Spring 和 Mybatis 整合

1 SqlSessionFactoryBean
产生的是 SqlSessionFactory 类型的对象 最终能提供 SqlSession
这个类型 依赖于 dataSource 和 Sql 定义文件
2 MapperFactoryBean
产生的是Mapper 的实现类
这个类型 依赖于 SqlSessionFactory 和 Mapper接口

整合步骤

5.1建立一个项目 导入jar包(mybatis.jar mybatis-spring.jar
ojdbc14.jar ioc aop dao 数据库连接池 ) 拷贝Spring配置文件到src
5.2 编写实体类
5.3 编写SQL 定义文件
根据id 查询银行账户
5.4 根据Mapper映射器规则 编写DAO 接口
5.5 在Spring 配置文件中 配置 SqlSessionFactoryBean
依赖于dataSource 和 SQL 定义
5.6 在Spring 配置文件中 配置 MapperFactoryBean 就可以产生DAO 的实现类

批量产生Mapper实现类的组件



通过自定义标注 控制接口产生实现类

第二种集成方案

SqlSessionTemplate
1建立一个项目 导入jar包(mybatis.jar mybatis-spring.jar
ojdbc14.jar ioc aop dao 数据库连接池 ) 拷贝Spring配置文件到src
2 编写实体类
3 编写SQL 定义文件
根据id 查询银行账户
4 根据Mapper映射器规则 编写DAO 接口
5 在Spring 配置文件中 配置 SqlSessionFactoryBean
依赖于dataSource 和 SQL 定义
6 编写DAO 的实现类 实现DAO 接口 并注入 SqlSessionTemplate 类型的对象
这个对象依赖于 sqlSessionFactory。利用SqlSessionTemplate 对应的API 完成操作。
注意创建DAO 实现类组件 需要组件扫描

posted @ 2020-09-03 18:09  火星的巧克力  阅读(179)  评论(0)    收藏  举报
/* 返回顶部代码 */ TOP