mybatis同时insert多张表_MyBatis基础知识回顾
⽂章内容输出来源:拉勾教育Java就业训练营;
insert into select from mysql⽂章内容输出来源:拉勾教育Java就业训练营;
前⼏天(⼤概是双⼗⼀那⼏天),班主任karry⽼师给我们每个⼈发了三张学习卡,这张学习卡可以⽤来
体验其他训练营,我就尝试着报了⼀个《JAVA⼯程师⾼薪训练营》的⼀个星期的体验班。
正好前⼏天,我在就业训练营的学习进⼊到了第六阶段SSM框架的学习,学习到了MyBatis这个模块。Java⾼薪训练营的第⼀阶段模块⼀也是在讲解这⼀部分的知识,不过这⼀模块相⽐与⾃⼰的训练营那⾥讲的更深⼊⼀些,这⾥多了很多源码剖析的内容,开始听⼀遍根本没有听懂,之后,⼜重新的听了⼀遍,对于MyBatis的源码与组成⼜有了更深⼀步认识。
这篇⽂章中就先来写⼀些关于Mybatis的基础知识的回顾
MyBatis的相关概念
ORM
ORM全称Object/Relation Mapping:表⽰对象-关系映射的缩写
ORM完成⾯向对象的编程语⾔到关系数据库的映射。当ORM框架完成映射后,程序员既可以利⽤⾯向 对象程序设计语⾔的简单易⽤性,⼜可以利⽤关系数据库的技术优势。ORM把关系数据库包装成⾯向对 象的模型。ORM框架是⾯向对象设计语⾔与关系数据库发展不同步时的中间解决⽅案。采⽤ORM框架 后,应⽤程序不再直接访问底层数据库,⽽是以⾯向对象的放松来操作持久化对象,⽽ORM框架则将这 些⾯向对象的操作转换成底层SQL操作。ORM框架实现的效果:把对持久化对象的保存、修改、删除 等 操作,转换为对数据库的操作Mybatis简介
MyBatis是⼀款优秀的基于ORM的半⾃动轻量级持久层框架,它⽀持定制化SQL、存储过程以及⾼级映 射。MyBatis避免了⼏乎所有的JDBC代码和⼿动设置参数以及获取结果集。MyBatis可以使⽤简单的 XML或注解来配置和映射原⽣类型、接⼝和Java的POJO (Plain Old Java Objects,普通⽼式Java对 象) 为数据库中的记录。
mybatis 主页⾯
MyBatis优势
Mybatis是⼀个半⾃动化的持久层框架,对开发⼈员开说,核⼼sql还是需要⾃⼰进⾏优化,sql和java编 码进⾏分离,功能边界清晰,⼀个专注业务,⼀个专注数据。
使⽤MyBatis 开发第⼀个增删改查操作吧!!
1.⾸先搭建环境,使⽤maven在l导⼊我们所需要的MyBtais的坐标和其他相关坐标。
<properties>
2.在我们的数据库中创建如下的user表格
user
对应的sql语句为:
google chrome 浏览器下载最新版
DROP
3.在src⽬录下对应创建我们需要的User实体类
public
4.接下来在资源(resource)⽬录下,创建我们所需要的UserMapper 映射⽂件
<?xml version="1.0" encoding="UTF-8" ?>
5.编写MyBatis 核⼼⽂件
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN“
6.编写测试⽂件
//加载核⼼配置⽂件
配置成功啦!使⽤MyBatis 来进⾏我们的第⼀个CRUD操作吧
1.先来编写UserMapper的映射⽂件,在⽂件中插⼊
<mapper
编写插⼊实体的User 的代码
InputStream我要自学网全套视频教程
插⼊语句使⽤insert标签
在映射⽂件中使⽤parameterType属性指定要插⼊的数据类型
·Sql语句中使⽤#{实体属性名}⽅式引⽤实体中的属性值
插⼊操作使⽤的API是sqlSession.insert(“命名空间.id”,实体对象);
插⼊操作涉及数据库数据变化,所以要使⽤sqlSession对象显⽰的提交事务,即sqlSessionmit()
修改数据
<mapper
的代码
User 的代码
编写修改实体 User
编写修改实体
InputStream
修改操作注意问题
修改语句使⽤update标签
修改操作使⽤的API是sqlSession.update(“命名空间.id”,实体对象);
MyBatis 的删除数据操作
UserMapper 映射⽂件
映射⽂件
编写 UserMapper
编写
delete语句中如果没有指定where子句
<mapper
编写删除数据的代码
指针指向数组下一个元素
InputStream
删除操作注意问题
删除语句使⽤delete标签
·
Sql语句中使⽤#{任意字符串}⽅式引⽤传递的单个参数
删除操作使⽤的API是sqlSession.delete(“命名空间.id”,Object);
到这⾥,使⽤MyBatis 完成的第⼀个增删改查操作就完成了,MyBatis 已经⼊门了,下⾯我们来了解⼀下我们编写的配置⽂件。<?xml version="1.0" encoding="UTF-8" ?>
configration
MyBatis 的核⼼配置⽂件解析
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN“
同样,在外部可以创建⼀个jdbc.properites
jdbc.sql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/springbootdata?serverTimezone=UTC
jdbc.username=root
jdbc.password=libaice
其中,事务管理器(transactionManager)类型有两种:
·JDBC:这个配置就是直接使⽤了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作 ⽤域。
·MANAGED:这个配置⼏乎没做什么。它从来不提交或回滚⼀个连接,⽽是让容器来管理事务的整个⽣ 命周期(⽐如 JEE 应⽤服务器的上下⽂)。 默认情况下它会关闭连接,然⽽⼀些容器并不希望这
样,因 此需要将 closeConnection 属性设置为 false 来阻⽌它默认的关闭⾏为。
其中,数据源(dataSource)类型有三种:
·UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。
·POOLED:这种数据源的实现利⽤“池”的概念将 JDBC 连接对象组织起来。
·JNDI:这个数据源的实现是为了能在如 EJB 或应⽤服务器这类容器中使⽤,容器可以集中或在外部配置 数据源,然后放置⼀个 JNDI 上下⽂的引⽤。
2)mapper标签
该标签的作⽤是加载映射的,加载⽅式有如下⼏种:
<mapper
通常,我们习惯⽤⼀个包名的⽅式来映射
Mybatis相应API介绍
SqlSession⼯⼚构建器SqlSessionFactoryBuilder
常⽤API:SqlSessionFactory build(InputStream inputStream)
通过加载mybatis的核⼼⽂件的输⼊流的形式构建⼀个SqlSessionFactory对象
String
SqlSession⼯⼚对象SqlSessionFactory
SqlSessionFactory 有多个个⽅法创建SqlSession 实例。常⽤的有如下两个:
openSession()
会话对象
SqlSession 会话对象
SqlSessionmysql语句多表查询
SqlSession 实例在 MyBatis 中是⾮常强⼤的⼀个类。在这⾥你会看到所有执⾏语句、提交或回滚事务和
获取映射器实例的⽅法。
执⾏语句的⽅法主要有
<
MyBatis的DAO层实现
UserDao
public
测试传统⽅法
@Test
2 代理开发⽅式
代理开发⽅式介绍
采⽤ Mybatis 的代理开发⽅式实现 DAO 层的开发,这种⽅式是我们后⾯进⼊企业的主流。
Mapper 接⼝开发⽅法只需要程序员编写Mapper 接⼝(相当于Dao 接⼝),由Mybatis 框架根据接⼝ 定义创建接⼝的动态代理对象,代理对象的⽅法体同上边Dao接⼝实现类⽅法。
Mapper 接⼝开发需要遵循以下规范:
1) l⽂件中的namespace与mapper接⼝的全限定名相同
2) Mapper接⼝⽅法名和l中定义的每个statement的id相同
3) Mapper接⼝⽅法的输⼊参数类型和l中定义的每个sql的parameterType的类型相同
4) Mapper接⼝⽅法的输出参数类型和l中定义的每个sql的resultType的类型相同
编写UserMapper接⼝
public
在mapper 中配置其相关
<mapper
测试代理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。