黑马程序员视频教程学习mybatis框架常用注释SQL语句学习笔记?
mybatis学习笔记
- 常用注释增删改查SQL语句
- 常用注释拓展SQL语句
- 解决实体类属性和数据库表中的属性名称不相同的问题:
- mybatis注解之一对一查询:
- mybatis注解之一对多查询:
- mybatis开启二级缓存
黑马程序员ssm框架视频教程之mybatis注解学习笔记。
软件:
IDEA+Navicat(mysql)
数据表:
常用注释增删改查SQL语句
功能 | 注释SQL常用增删改查语句 |
---|---|
查 |
@Select("select *from user ")
|
增 |
@Insert("insert into user(username,address,sex,birthday) values {#username},#{address},#{sex},#{birthday} ")
|
改 |
@Update("update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id} ")
|
删 |
@Delete("delete from user where id=#{id} ")
|
常用注释拓展SQL语句
功能 | 常用注释拓展SQL语句 |
---|---|
根据id查用户 |
@Select("select *from user where id=#{id} ")
|
模糊查询第一种 |
@Select("select *from user where username like #{username} ")
|
第一种注意事项 | 调用方法的时候需要把数据两端加入%,例如:%小% |
模糊查询第二种 |
@Select("select *from user where username like '%${value}%' ")
|
查询总用户数量 |
@Select("select count(*) from user ")
|
解决实体类属性和数据库表中的属性名称不相同的问题:
实体类的属性为:
userId,userName,userAddress,userSex,userBirthday
数据库表的属性为:
id,username,address,sex,birthday
解决方法:
@Results(id="userMap",value={@Result(id=true,column="id" property="userId"),@Result(column="username",property="userName"),@Result(column="address",property="userAddress"),@Result(column="sex",property="userSex"),@Result(column="birthday",property="userBirthday"),})
因为避免每一个注解都要重复写上面这个解决方法,我们可以使用ResultMap来调用上面的注解。
@ResultMap("userMap")
严谨注解应为:@ResultMap(value={"userMap"})
因为只有一个属性可以省略为上面的哪种形式
如图所示:
后面单纯属于笔记部分,如果具体想学可以去看视频教程,老师说的挺详细的,因为书上表达能力有限,所有存在表达不清。
mybatis注解之一对一查询:
视频教程:mybatis一对一查询
使用到了两个表,如图所示:
account表:
user表:
使用到注释:
accout表的查询注解:
@Select("select *from accout")
user表的查询注解:
@Select("select *from user)
实现根据accout的账户uid来查询user的用户信息:
使用注解:
@Results(id="accoutMap",value={@Result(id=true,column="id",property="id"),@Result(column="uid",property="uid"),@Result(column="money",property="money"),@Result(property="user",column="uid",one=@One(select="完整路径下的user表的查询方法,列如:com.example.dao.IUserDao.findById",fetchType=FetchType.EAGER))})
解析:
fetchType的属性:
EAGER:立即加载数据
LAZY:延迟加载数据
mybatis注解之一对多查询:
视频教程:mybatis一对多查询
因为一个用户可以有多个账户:
user表的查询注解:
@Select("select *from user")
account表的更加uid查询注解
@Select("select *from account where uid=#{userId}")
实现根据user的用户id来查询accout的多个账户信息:
@Results(id="userMap",value={@Result(id=true,column="id",property="userId"),@Result(column="username",property="userName"),@Result(column="address",property="userAddress"),@Result(column="sex",property="userSex"),@Result(column="birthday",property="userBirthday"),@Result(property="accounts",column="id",many=@Many(select="这里使用account根据uid查询的方法例如:com.example.dao.IAccountDao.findAccountByUid",fetchType=FetchType.LAZY))})
mybatis开启二级缓存
视频教程:开启二级缓存
配置二级缓存开启:
@CacheNamespace(blocking=true)
还在持续学习中。。。
黑马程序员视频教程学习mybatis框架常用注释SQL语句学习笔记?相关推荐
- 黑马程序员:从零基础到精通的前端学习路线
黑马程序员:从零基础到精通的前端学习路线 随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上 ...
- 黑马程序员--OC之Foundation框架的使用
黑马程序员--OC之Foundation框架的使用 ------- <a href="http://www.itheima.com" target="blank&q ...
- 黑马程序员最新版JavaWeb基础教程最后的案例学习记录
黑马程序员最新版JavaWeb基础教程最后的案例学习记录这里写自定义目录标题 调试中我遇到的问题 调试中我遇到的问题 若db1报错: 则 改成自己的数据库名称 web.xml报错:则用这一段代码 &l ...
- 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题
写在前面: 本人是在学习B站黑马程序员SSM框架教程视频的时候在P37集遇到了问题,如果不解决还没办法往下接着听,老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题,全在 ...
- 黑马程序员新版Linux零基础快速入门到精通——学习笔记
01初识Linux 1.1.操作系统概述 1.1.1.硬件和软件 我们所熟知的计算机是由硬件和软件组成的. 硬件: 计算机系统中由电子.机械和光电元件等组成的各种物理装置的总称. (看的见.摸得着 ...
- 黑马程序员——JavaSE之集合框架总结二
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一次对整个集合框架中全部包含的内容作了笼统的概念性的解释,这次只针对其中常用的几个集合进行仔细 ...
- 黑马程序员_java之集合框架
android培训.物联云计算培训. java培训.期待与您交流! ---------- 集合框架 集合框架体系概述 集合:存储对象最常用的一种方式 数组集合作为容器区别:数组,可存储对象.基本数据类 ...
- 黑马程序员_Java高新技术3(框架,JavaBeans与内省(Introspector)) - 伊秋
1.Java框架(frame) /* 通俗例子:我做房子(框架)卖给用户住,由用户自己安装门窗和空调(用户自定义类/用户自定义其它信息)用户需要使用我的房子(框架),把符合框架中结构的门窗插入进我提供 ...
- 黑马程序员Java培训、Android培训_银行业务调度系统笔记
银行业务调度系统 一.学习心得: 第一点,和交通灯系统一样,银行业务调度系统也必须用面相对象的思想来设计,不然会很繁琐.所以,必须在平时的学习中重视面向对象设计的练习和掌握. 第二点,要设计这个银行业 ...
最新文章
- 解决DataList控件无缝滚动图片(转)
- 不想学python-没想到,学会Python即使不做程序员都能月入过万!
- 即时通讯音视频开发(一):视频编解码之理论概述
- select2 change之前的改变
- .NET core2.0 发布至IIS中
- 移动app测试的多样性_做移动APP功能测试,这些因素你得都考虑到~
- hadoop示例源码位置
- 8.8 Sencha Studio 监视工具( Inspect Tool)
- 解决Git 重复输入用户名和密码的问题
- HDU2022 海选女主角【最值】
- 快读快写:读入输出优化
- 多线程和多进程的区别
- 【长篇肝文7万字】模电/数电/单片机/计算机组成原理/电力电子常见笔试/面试题(合集)未完更新ing
- 华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表
- python计算本息总和_python计算等额本金,等额本息
- kron matlab_MATLAB中kron命令有什么用途
- Python金融行业必备工具
- Navicat 设置自动插入时间触发器
- 拔开云雾的linux网络
- 【Python爬虫学习实践】多线程爬取Bing每日壁纸
热门文章
- mysql的字符串等于函数吗_MySQL函数的字符串函数
- 深度残差收缩网络(Deep Residual Shrinkage Networks for Fault Diagnosis )
- 《前端技巧》清理微信浏览网站的缓存,Cookie
- 提问的艺术 | 如何聪明地提问
- 数据结构C语言版(答案)
- php webcam,如何使用Dynamic Web TWAIN附加组件构建PHP Webcam App
- Spring @Autowired 用法
- 128陷阱解析(Java中的128陷阱)
- 计算机网络 交换机工作原理
- AutoIt v3.3.14.2 汉化最新版