MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】
- Java后端 学习路线 笔记汇总表【黑马程序员】
- MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】【day01】
- MyBatis-学习笔记02【02.Mybatis入门案例】
- MyBatis-学习笔记03【03.自定义Mybatis框架】
- MyBatis-学习笔记04【04.自定义Mybatis框架基于注解开发】【day02】
- MyBatis-学习笔记05【05.使用Mybatis完成CRUD】
- MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
- MyBatis-学习笔记07【07.Mybatis的连接池及事务】【day02】
- MyBatis-学习笔记08【08.动态SQL】
- MyBatis-学习笔记09【09.Mybatis的多表操作】
- MyBatis-学习笔记10【10.JNDI扩展知识】
- MyBatis-学习笔记11【11.Mybatis的缓存】【day02】
- MyBatis-学习笔记12【12.Mybatis注解开发】
目录
01.mybatis课程介绍
02.三层架构和ssm框架的对应关系
03.jdbc操作数据库的问题分析
04.mybatis概述
05.mybatis环境搭建-前期准备
创建Maven工程
创建数据库表
mybatis坐标
pom.xml
06.mybatis的环境搭建
编写User实体类
编写持久层接口IUserDao
在resources文件夹下 新建SqlMapConfig.xml文件
编写IUserDao.xml
mybatis环境搭建步骤总结
07.环境搭建的注意事项
01.mybatis课程介绍
mybatis框架 共四天
第一天:mybatis入门
mybatis的概述
mybatis的环境搭建
mybatis入门案例
自定义mybatis框架(主要的目的是为了让大家了解mybatis中执行细节)
第二天:mybatis基本使用
mybatis的单表crud操作
mybatis的参数和返回值
mybatis的dao编写
mybatis配置的细节
几个标签的使用
第三天:mybatis的深入和多表
mybatis的连接池
mybatis的事务控制及设计的方法
mybatis的多表查询
一对多(多对一)
多对多
第四天:mybatis的缓存和注解开发
mybatis中的加载时机(查询的时机)
mybatis中的一级缓存和二级缓存
mybatis的注解开发
单表CRUD
多表查询
02.三层架构和ssm框架的对应关系
1、什么是框架?
它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。
使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。
2、三层架构
表现层:是用于展示数据的
业务层:是处理业务需求
持久层:是和数据库交互的
03.jdbc操作数据库的问题分析
3、持久层技术解决方案
JDBC技术:
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate:
Spring中对jdbc的简单封装
Apache的DBUtils:
它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装以上这些都不是框架
JDBC是规范
Spring的JdbcTemplate和Apache的DBUtils都只是工具类。
04.mybatis概述
4、mybatis的概述
mybatis是一个持久层框架,用java编写的。
它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
它使用了ORM思想实现了结果集的封装。ORM:Object Relational Mappging 对象关系映射
简单的说:就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。
user User
id userId
user_name userName今天我们需要做到:实体类中的属性和数据库表的字段名称保持一致。
user数据表 User实体类
id id
user_name user_name
05.mybatis环境搭建-前期准备
创建Maven工程
若勾选的话,选择普通的java工程
创建数据库表
数据库:eesy_mybatis
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');
mybatis坐标
mybatis官网:mybatis – MyBatis 3 | 简介
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itheima</groupId><artifactId>day01_easy_01mybatis</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><!--打包方式:jar包--><!--导入mybatis坐标--><dependencies><!--依赖--><dependency><!--mybatis必备--><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version><!--最新版--></dependency><dependency><!--mybatis必备--><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><!--日志--><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><!--单元测试--><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
</project>
06.mybatis的环境搭建
编写User实体类
package com.itheima.domain;import java.io.Serializable;
import java.util.Date;public class User implements Serializable {private Integer id;private String username;private Date birthday;private String sex;private String address;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", birthday=" + birthday +", sex='" + sex + '\'' +", address='" + address + '\'' +'}';}
}
编写持久层接口IUserDao
package com.itheima.dao;import com.itheima.domain.User;import java.util.List;/*** 用户的持久层接口*/
public interface IUserDao {/*** 查询所有用户** @return*/List<User> findAll();
}
在resources文件夹下 新建SqlMapConfig.xml文件
SqlMapConfig.xml:文件名一般写为SqlMapConfig.xml。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis的主配置文件 -->
<configuration><!-- 配置环境 --><environments default="mysql"><!-- 配置mysql的环境 --><environment id="mysql"><!-- 配置事务的类型 --><transactionManager type="JDBC"></transactionManager><!-- 配置数据源(连接池) --><dataSource type="POOLED"><!-- 配置连接数据库的4个基本信息 --><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 --><mappers><mapper resource="com/itheima/dao/IUserDao.xml"/><!-- resource指定文件位置 --></mappers>
</configuration>
编写IUserDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IUserDao"><!--配置查询所有--><select id="findAll" resultType="com.itheima.domain.User">select * from user</select>
</mapper>
mybatis环境搭建步骤总结
07.环境搭建的注意事项
5、mybatis的入门
mybatis的环境搭建
第一步:创建maven工程并导入坐标
第二步:创建实体类和dao的接口
第三步:创建Mybatis的主配置文件 SqlMapConifg.xml
第四步:创建映射配置文件 IUserDao.xml
环境搭建的注意事项:
第一个:创建IUserDao.xml 和 IUserDao.java时,名称是为了和我们之前的知识保持一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的。(Mapper==Dao)
第二个:在idea中创建目录的时候,它和包是不一样的
包在创建时:com.itheima.dao是三级结构
目录在创建时:com.itheima.dao是一级目录
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
好处:当我们遵从了第三、四、五点之后,我们在开发中就无须再写dao的实现类。
mybatis的入门案例
mybatis框架 共四天
第一天:mybatis入门mybatis的概述mybatis的环境搭建mybatis入门案例自定义mybatis框架(主要的目的是为了让大家了解mybatis中执行细节)
第二天:mybatis基本使用mybatis的单表crud操作mybatis的参数和返回值mybatis的dao编写mybatis配置的细节几个标签的使用
第三天:mybatis的深入和多表mybatis的连接池mybatis的事务控制及设计的方法mybatis的多表查询一对多(多对一)多对多
第四天:mybatis的缓存和注解开发mybatis中的加载时机(查询的时机)mybatis中的一级缓存和二级缓存mybatis的注解开发单表CRUD多表查询
-----------------------------------------------------------
1、什么是框架?它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。
2、三层架构表现层:是用于展示数据的业务层:是处理业务需求持久层:是和数据库交互的
3、持久层技术解决方案JDBC技术:ConnectionPreparedStatementResultSetSpring的JdbcTemplate:Spring中对jdbc的简单封装Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装以上这些都不是框架JDBC是规范Spring的JdbcTemplate和Apache的DBUtils都只是工具类
4、mybatis的概述mybatis是一个持久层框架,用java编写的。它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程它使用了ORM思想实现了结果集的封装。ORM:Object Relational Mappging 对象关系映射简单的说:就是把数据库表和实体类及实体类的属性对应起来让我们可以操作实体类就实现操作数据库表。user Userid userIduser_name userName今天我们需要做到:实体类中的属性和数据库表的字段名称保持一致。user数据表 User实体类id iduser_name user_name
5、mybatis的入门mybatis的环境搭建第一步:创建maven工程并导入坐标第二步:创建实体类和dao的接口第三步:创建Mybatis的主配置文件 SqlMapConifg.xml第四步:创建映射配置文件 IUserDao.xml环境搭建的注意事项:第一个:创建IUserDao.xml 和 IUserDao.java时,名称是为了和我们之前的知识保持一致。在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper所以:IUserDao 和 IUserMapper是一样的。(Mapper==Dao)第二个:在idea中创建目录的时候,它和包是不一样的包在创建时:com.itheima.dao是三级结构目录在创建时:com.itheima.dao是一级目录第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名好处:当我们遵从了第三、四、五点之后,我们在开发中就无须再写dao的实现类。mybatis的入门案例第一步:读取配置文件第二步:创建SqlSessionFactory工厂第三步:创建SqlSession第四步:创建Dao接口的代理对象第五步:执行dao中的方法第六步:释放资源注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中配置的方式:指定实体类的全限定类名 resultType="com.itheima.domain.User"mybatis基于注解的入门案例:把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。明确:我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式。不管使用XML还是使用注解配置。但是Mybatis它是支持写dao实现类的。
6、自定义Mybatis的分析:mybatis在使用代理dao的方式实现增删改查时做什么事呢?只有两件事:第一:创建代理对象第二:在代理对象中调用selectList自定义mybatis能通过入门案例看到类class Resourcesclass SqlSessionFactoryBuilderinterface SqlSessionFactoryinterface SqlSession
MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】相关推荐
- [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍
[MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...
- mybatis学习笔记-02-第一个mybatis程序
该视频为狂神说java视频配套笔记(博主自己手打223,日后做个参考223),b站连接:Mybatis最新完整教程IDEA版[通俗易懂]-02-第一个mybatis程序) 文章目录 2.第一个myba ...
- Mybatis学习笔记 4:Mybatis 连表查询(一)——一对多关系
完整代码在这 在查询数据库时,我们经常会遇到多张表联合查询的情况,而Mybatis使连表查询更加简便了,查询出的数据格式非常易于使用,省去了一大部分复杂的代码编写工作,对于关系型数据库来说,数据模型之 ...
- 【斯坦福21秋(李沐)】实用机器学习(学习笔记)——1.1课程介绍
一.概述 Industral ML:主要是讲机器学习在工业中的应用. 二.机器学习在工业界的应用 制造:预测设备是否需要维护.生产的产品质量控制等 零售:商品推荐.客服机器人.预测产品销量等 健康: ...
- Mybatis学习笔记_5、Mybatis动态SQL
动态 SQL 是 MyBatis 的强大特性之一.MyBatis提供的对SQL语句动态组装的功能解决了开发人员在使用JDBC或其他的框架进行数据库开发时,需要手动拼装SQL的繁琐问题. 动态SQL元素 ...
- Hadoop学习笔记——入门教程(虚拟机安装LinuxHadoop环境搭建配置)
文章目录 一.Hadoop安装配置文档及注意事项 二.Hadoop概述 2.1.Hadoop是什么 2.2.Hadoop的发展历史 2.3.Hadoop三大发行版本 2.3.1 Apache Hado ...
- .net core 2.0学习笔记(一):开发运行环境搭建
期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...
- Spring Boot基础学习笔记24:RabbitMQ安装以及整合环境搭建
文章目录 零.学习目标 一.消息服务概述 (一)为什么使用消息服务 1.使用消息服务的好处 2.异步处理 3.应用解耦 4.流量削峰 5.分布式事务管理 6.分布式事务管理流程 (二)常用的消息中间件 ...
- 【tensorflow.js学习笔记(1)】tf.js环境搭建及曲线拟合例子
月初TensorFlow开发者大会上,谷歌正式发布了TensorFlow的JS版本tensorflow.js,并演示了几个很有意思的demo,展现了浏览器环境下也能进行深度学习任务的能力.tensor ...
最新文章
- Jenkins与SVN持续集成
- swift懒加载(lazy load)VS OC懒加载
- JS脚本实现CSDN免登陆免关闭广告插件自动展开“阅读更多”内容
- java tree degree_生成树计数-Matrix-Tree定理
- MyBatis动态SQL小结
- re:Invent第二天:互联网客户在右传统客户在左,AWS向哪儿?
- WiresShark之抓http包如何倒出图片格式的对象
- CF570D-Tree Requests【长链剖分】
- 有效Java第三版的源代码已更新为使用较新的功能
- 做计算机工作的要专用手机吗,怎么在手机上完成工作?原来没有电脑手机还可以这样用...
- 不信你不来!周老师带你用ArkControl实现自动化运维体系建设
- Outlook验证服务器证书,OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书...
- CuPy is not correctly installed
- root 存档位置 linux,Linux 档案与目录管理(转)
- 润乾报表设计器——预览报表问题解决
- unity FBX模型导出系统源码WRP FBX Exporter下载
- SpringMvc入门学习(IDEA创建SpringMVC项目)
- IC Compiler II(ICC II)后端设计流程——超详细
- MaratonIME plays Cîrokime
- gt; 和 lt; 代表大于号gt; 和小于号lt; 以及其英文的全称
热门文章
- 风变python基础语法第11关_Python基础语法学习笔记之风变第十四关项目实操
- 网络工程计算机文科可以报考么,文科生可报考自考本科网络工程吗?
- mysql命令行查看表的触发器_Mysql事项,视图,函数,触发器命令(详解)
- cortex系列处理器排行_ARM推出Cortex-A78C处理器,欲夺X86笔记本市场
- linux接收手机信号,接收关联设备的信号强度在Linux接入点
- java切面不需要接口了吗_使用java语言,如何对一个类中的静态方法做切面编程?...
- 设计模式之---观察者模式
- 四十八、Python中的GUI布局tkinter
- 三十二楼层选几层最好_32层的房子买几楼好
- ICLR 2022 | 从因果不变性视角探讨图神经网络的分布外泛化鲁棒性