今日学习:MyBatis

一、MyBatis简介

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
为什么要使用MyBatis?
1.MyBatis是一个半自动化的持久化层框架。
2.JDBC
-SQL夹在Java代码块里,耦合度高导致硬编码内伤
-维护不易且实际开发需求中sql是有变化,频繁修改的情况多见
3.Hibernate和JPA
-长难复杂SQL,对于Hibernate而言处理也不容易
-内部自动生产的SQL,不容易做特殊优化。
-基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致4.数据库性能下降。
5.对开发人员而言,核心sql还是需要自己优化
6.sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。

二、MyBatis-HelloWorld

1.HelloWorld简单版
-创建一张测试表
-创建对应的javaBean
-创建mybatis配置文件,sql映射文件
-测试
MyBatis操作数据库
1、创建MyBatis全局配置文件
MyBatis 的全局配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息、如数据库连接池信息等。指导着MyBatis进行工作。我们可以参照官方文件的配置示例。
2、创建SQL映射文件
映射文件的作用就相当于是定义Dao接口的实现类如何工作。这也是我们使用MyBatis时编写的最多的文件。
测试
1、根据全局配置文件,利用SqlSessionFactoryBuilder创建SqlSessionFactory

String resource="mybatis-config.xml";
InputStream inputstream=Resources.getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputstream);

2、使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话。

SqlSession openSession=factory.openSession();

使用SqlSession根据方法id进行操作

SqlSession openSession=factory.openSession();
try{
object one=openSession.selectOne(com.hly.dao.EmployeeMapper.getEmpById",1);
System.out.println(one);
}finally{
openSession.clone();
}

HelloWorld-接口式编程
1.创建一个Dao接口
2.修改Mapper文件
3.测试
使用SqlSession获取映射器进行操作

SqlSession openSession=factory.openSession();
try{
EmployeeMapper mapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee=mapper.getEmpById(1);
System.out.println(employee);
}finally{
sqlSession.clone();
}

SqlSession
1.SqlSession 的实例不是线程安全的,因此是不能被共享的。
2.SqlSession每次使用完成后需要正确关闭,这个关闭操作是必须的
3.SqlSession可以直接调用方法的id进行数据库操作,但是我们一般还是推荐使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作

三、MyBatis-全局配置文件

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下:
configuration 配置
properties 属性
settings 设置
typeAliases 类型命名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider 数据库厂商标识
mappers 映射器

四、MyBatis-映射文件

映射文件指导着MyBatis如何进行数据库增删改查,有着非常重要的意义;
cache –命名空间的二级缓存配置
cache-ref – 其他命名空间缓存配置的引用。
resultMap – 自定义结果集映射
parameterMap – 已废弃!老式风格的参数映射
sql –抽取可重用语句块。
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句

五、MyBatis-动态SQL

1.动态 SQL是MyBatis强大特性之一。极大的简化我们拼装SQL的操作。
2.动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。
3.MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作。
-if
-choose (when, otherwise)
-trim (where, set)
-foreach

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值