今日所学(四) [当日学习内容检查,如果有误,望大家赐教]
一、回顾知识
1、什么是框架?
拿我的生活的例子来说,框架就好比是一个等待装修的毛坯房
框架就像一个半成品的软件,等待开发人员进行二次开发1
框架的优点:
1、节省人力物力,节省资源
2、框架规范了开发者的代码,使得其代码可读性高 , 间接减少了我们后期开发的成本
2、什么是orm框架
首先了解到orm是什么意思1, 对象关系映射框架
作用是 将java对象数据与数据库数据进行一个映射管理
3、mybatis框架
是一个半自动的orm框架 , 与其中对应的是全自动的orm框架
这里的半自动和全自动说的 sql代码 是否可以自己编写
这里引申到了mybatis和hibernate的区别
第一点:谈及到自动化 , mybatis中sql语句可以编写 , hibernate中sql语句自己生成
第二点是上述谈及sql是否可以调优,mybatis可写sql
第三点是mybatis比hibernate更容易学习,但是比hibernate跟复杂
4、mybatis的写法
pom文件
mybatis的核心文件
mapper映射文件以及mapper接口文件
然后就是需要pojo类
5、mybatis工作流程
首先就是使用流去读取mybatis的核心文件
然后就去new一个sqlsessionfactorybuilder对象
紧接着使用构建者模式去build我们的mybatis的文件,返回给我们的sqlsessionfactory对象
然后进行工厂模式,sqlsessionfactory.opensession()返回我们sqlsession对象
这里有两条路线去操作数据库
第一条是sqlsession直接操作数据库
第二条是 sqlsession调用getmapper()方法 , 使用动态代理模式获取mapper对象 , 然后操作数据库
6、mapper动态代理
getmapper方法最终是调用jdk动态代理方法,生成一个代理对象,类型是传入的接口类型
Mapperprox类invoke()方法中,MapperMethod类调用了execute()方法,通过上述来创建代理方法,该方法的底层调用是sqlsession的方法
二、今日学习
1 、使用mybatis框架进行增删改查
2、#和$的区别:
#是sql模板的占位符 , $是将字符串拼接到sql模板
#可以防止sql注入,$不能
${}括号中必须是value
3、sql模板中like后面
1、在调用方法时候使用%% 2、使用字符拼接 %{value} 模糊查询如果不想在调用方法时参数加%,可以使用拼接参数的方式设置Sql:
3 使用#然后加上 bind 参数
4 mybatis多参数处理方法
一、自定义类传参
二、map传参
三、顺序传参 arg0 , param1开始 (可读性不高)
四 @Param 传参 MyBatis接口方法的参数前使用@Param 传参,定义映射文件中Sql语句的参数名
5、主鍵回填 mybatis
解决了插入数据不知道id的情况
使用用法 selectKey 标签中的属性有 ke'yProperty是java的属性 keyColumn是数据库列名 , resultType是主键的类型 order 执行之后
select LAST_ISERT_ID() 查询表中最后的一个id
必须要和<insert>标签连用
6、property属性
引入数据源
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=root
7、别名(typealias)
<typeAliases>一个配一个包的 <typeAlias type="com.wr.domain.User" alias="User"></typeAlias>一个是配一个类的<typeAlias type="com.wr.domain"></typeAlias></typeAliases>
今日所学(四) [当日学习内容检查,如果有误,望大家赐教]相关推荐
- 今日所学(五) [当日学习内容检查,如果有误,望大家赐教]
一.知识回顾 1.学习了mybatis的增删改查 注意事项: 1 映射文件的id与接口名字对应 2 在映射文件中命名空间是定义接口的位置 3.select标签 parameterType 传入的参数 ...
- 今日所学(一) [当日学习内容检查,如果有误,望大家赐教]
一.maven的作用: 一键构建和依赖管理 (解决了jar管理和项目管理) 二.下载完maven后, 然后解压,目录结构为bin boot conf 等 三.配置maven环境变量 1.首先需要 ...
- 今日所学(二) [当日学习内容检查,如果有误,望大家赐教]
一.Junit判定 断言操作实用类Assert 预期和实际一样 就通过 二.@Before @After 前者方法 和后置方法 三.maven中冲突产生的原因---->依赖传递 sp ...
- RHCSA第四天学习内容心得
一级目录的功能 > [root@daiyu ~]# ll / total 28 lrwxrwxrwx. 1 root root 7 Aug 12 2018 bin -> usr/bin d ...
- 加拿大高中计算机学什么内容,加拿大大学计算机科学专业排名情况及学习内容简单介绍...
伴随着近年来前往加拿大留学学生人数的不断增多,如何在众多专业中选择一个优势专业成为不少家长关注的热点.据了解,在加拿大的众多专业中,计算机科学专业不管是就业前景还是薪资待遇都是相当不错的,那么加拿大大 ...
- html css学习笔记~ 基础知识和页面显示的四个区域内容及display:flex 等常用的一些命令(手画)
一般 在html文件中输入<link href=".../xxx.css" rel="stylesheet"/> 通过这样的外部样式联系 css & ...
- python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
- python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
- 实验十四 课程学习总结
一.结合本学期课程学习内容,对比<实验一 软件工程准备>的任务5你所提的问题(给出提问博客链接),尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的:学习中是否产生了新的问题 ...
最新文章
- MiniGUI+qvfb+Eclipse完成嵌入式系统图形开发(开发环境的搭建)
- 在Spring中使用JDBCJobStore配置Quartz
- AppScan api登录接口 postman_如何通过Postman调用EDI系统的API?
- 动态重定位的增加的紧凑功能
- python list tuple 消耗_Python的List与Tuple
- Yii 文件上传类的使用
- Python:OpenCV的默认优化
- ASP.NET中Session的sessionState 4种mode模式
- 从底层分析python中深拷贝和浅拷贝区别
- 五大健身房管理软件实测超详细解读,健身房管理软件排名!
- 费用分摊分配用法(KSU5/KSV5/KB21N/KB11N)
- Android 应用资源(一)
- win10服务器网页打不开怎么办,win10系统浏览器网页打不开的解决技巧
- word文档页码从正文页开始编号
- wps加入全国计算机二级,WPS进入全国计算机二级考试,明年3月开考
- 用Python写一个简单的24点计算器
- Android保活方法
- Node.js实战(Node.js in Action)书中的代码实现
- 如何在文本中添加多条线
- 坐在办公室里的人注意一下-喝水--鼠标手---脖子(颈椎)---腰部
热门文章
- Excel插入图片自动OCR识别成可编辑的文字
- 自定义Flutter Lint插件实现自己的Dart语法规则(静态语法分析检测)
- 北京尚学堂JAVA第二章作业答案
- wordpress 时区设置问题,相差8个小时
- @Transactional(rollbackFor = Exception.class) 详解
- 550什么意思_550是什么意思
- 电子班牌系统服务器,电子班牌系统解决方案
- 科技系列 - 1 :判断键盘上的某个键按下 :KEY_DOWN
- cpu对寄存器的访问速度最快
- 天籁obd接口针脚定义_汽车16针obd接口针脚定义