mybits框架是咋运行的?**
一句话 会化工厂执行
首先读取配置文件主配置文件 config.xml 该文件配置了 数据源 事务 mybits 运行环境。第二部 加载mapper.xml 映射文件 该文件里边是SQL语句 他需要在mybits.xml 主配置文件 加载 第三步 根据上边的两个配置文件创建会化工厂sqlsessionfactory 会话工厂创建sqlsession 对象 sqlsesssion 对象 他提供有执行SQL的所有方法 通过 Executor执行器 操作数据库 (Excutor是一mybits的核心接口。他与sqlsession绑定, 一个sesion绑定一个Excutor。 由congiggration 创建 ,sqlsession通过执行器操作数据库 执行器excutor通过mappedStament对象将传入的java对象映射到SQL语句中 在执行SQL语句后 mapeerstament 对象将执行结果映射到java对象(类) )
加载载配置文件—>在主配置文件中加载mapper映射文件—>根据配置文件 sessionfactory 工厂–>工厂创建sqlsession对象 -->对象通过执行器操作数据库
以上是对框架运行的半微观叙述 真正的底层还是很不简单的 这里只是大致简单的叙述一
后续继续深入补充。
1,mybits是什么?orm?
mybits 是一个web业务员层操作数据库的持久层框架底层是封装了jdbc.是简化l MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年5月这个项目由apahce sofeware foundation 迁移到了google code,并且改名为MyBatis。
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC
代码和参数的手工设置以及结果集的检索。1 简化JDBC的开发
2 能够更好的完成ORM(对象关系映射)
2 orm?
映射 把你数据库的字段属性值映射给你写的java类以便于业务操作编程 1要求字段和class字段属性名 一样。但是也有注解来声明一下但属性名和字段不一样时。
3,实操运用mybits进行增删改查、
dao层代理有良种方式。
方式一
1, 建表
create database mybatisdb default character set utf8;
use mybatisdb;
create table user(id int primary key auto_increment,name varchar(100),addr varchar(100),age int);
Insert into user values(null,'hanmeimei','北京',28);
Insert into user values(null,'xiongda','上海',20);
Insert into user values(null,'xiaonger','上海',19);
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dname` varchar(14) DEFAULT NULL,
`loc` varchar(13) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('1', '呵呵呵', '一区');
INSERT INTO `dept` VALUES ('2', '哈哈哈哈', '二区');
INSERT INTO `dept` VALUES ('3', 'operations', '二区');
INSERT INTO `dept` VALUES ('5', 'java教研部', '大钟寺');
INSERT INTO `dept` VALUES ('10', '开发', '西二旗');
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ename` varchar(10) DEFAULT NULL,
`job` varchar(9) DEFAULT NULL,
`mgr` decimal(4,0) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`sal` decimal(7,2) DEFAULT NULL,
`comm` decimal(7,2) DEFAULT NULL,
`deptno` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=510 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('100', 'jack', '副总', null, '2002-05-03', '90000.00', null, '1');
INSERT INTO `emp` VALUES ('200', 'tony', '总监', '100', '2015-02-02', '10000.00', '2000.00', '2');
INSERT INTO `emp` VALUES ('300', 'hana', '经理', '200', '2017-02-02', '8000.00', '1000.00', '2');
INSERT INTO `emp` VALUES ('400', 'leo', '员工', '300', '2019-02-22', '3000.00', '200.12', '2');
INSERT INTO `emp` VALUES ('500', 'liu', '员工', '300', '2019-03-19', '3500.00', '200.58', '2');
INSERT INTO `emp` VALUES ('502', '王一博', 'topidol.', '1000', '2021-03-31', '20000.00', '99.00', '88');
INSERT INTO `emp` VALUES ('504', '蔡徐坤', 'rapper', '10', '2021-03-29', '100.00', '1000.00', '100');
4,配置文件的创建
n
主配置文件mybits.xml和映射文件mapper.xml、、
3,映射文件的创建
5,映射文件的创建
在中namespace=“” 属性值是mapper映射文件的的标识 在后边进行整合时 会以接口的全路径名。里边嵌套的各种语句根据种类选择不同增删改查都有。 id是SQL语句的标识 在以后的id我几口里边抽象方法的名字。resultype是返回值类型。
6,编写测试类和实体类
其中
InputStream inputStream = Resources.getResourceAsStream("mybatis.config.xml");
SqlSessionFactory sqlsession = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsessions = sqlsession.openSession();
这就是,我们所说的加载配置文件创建会话工厂 调用opean(),最后得到sqlsession对象 。用它去执行我们的SQL语句 参数为mappernamespce 和SQL语句的id
7,再次滤清关系
dao 代理第二种方式?怎么开发 ?
8mybits缓存?
9mybits有一级缓存和二级缓存
10,mybits中动态SQL?
11,mybits中关系映射?一对一一对多?