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语句学习笔记?相关推荐

  1. 黑马程序员:从零基础到精通的前端学习路线

    黑马程序员:从零基础到精通的前端学习路线 随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上 ...

  2. 黑马程序员--OC之Foundation框架的使用

    黑马程序员--OC之Foundation框架的使用 ------- <a href="http://www.itheima.com" target="blank&q ...

  3. 黑马程序员最新版JavaWeb基础教程最后的案例学习记录

    黑马程序员最新版JavaWeb基础教程最后的案例学习记录这里写自定义目录标题 调试中我遇到的问题 调试中我遇到的问题 若db1报错: 则 改成自己的数据库名称 web.xml报错:则用这一段代码 &l ...

  4. 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题

     写在前面:​        本人是在学习B站黑马程序员SSM框架教程视频的时候在P37集遇到了问题,如果不解决还没办法往下接着听,老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题,全在 ...

  5. 黑马程序员新版Linux零基础快速入门到精通——学习笔记

    01初识Linux 1.1.操作系统概述 1.1.1.硬件和软件 我们所熟知的计算机是由硬件和软件组成的. 硬件: 计算机系统中由电子.机械和光电元件等组成的各种物理装置的总称. ​ (看的见.摸得着 ...

  6. 黑马程序员——JavaSE之集合框架总结二

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一次对整个集合框架中全部包含的内容作了笼统的概念性的解释,这次只针对其中常用的几个集合进行仔细 ...

  7. 黑马程序员_java之集合框架

    android培训.物联云计算培训. java培训.期待与您交流! ---------- 集合框架 集合框架体系概述 集合:存储对象最常用的一种方式 数组集合作为容器区别:数组,可存储对象.基本数据类 ...

  8. 黑马程序员_Java高新技术3(框架,JavaBeans与内省(Introspector)) - 伊秋

    1.Java框架(frame) /* 通俗例子:我做房子(框架)卖给用户住,由用户自己安装门窗和空调(用户自定义类/用户自定义其它信息)用户需要使用我的房子(框架),把符合框架中结构的门窗插入进我提供 ...

  9. 黑马程序员Java培训、Android培训_银行业务调度系统笔记

    银行业务调度系统 一.学习心得: 第一点,和交通灯系统一样,银行业务调度系统也必须用面相对象的思想来设计,不然会很繁琐.所以,必须在平时的学习中重视面向对象设计的练习和掌握. 第二点,要设计这个银行业 ...

最新文章

  1. 解决DataList控件无缝滚动图片(转)
  2. 不想学python-没想到,学会Python即使不做程序员都能月入过万!
  3. 即时通讯音视频开发(一):视频编解码之理论概述
  4. select2 change之前的改变
  5. .NET core2.0 发布至IIS中
  6. 移动app测试的多样性_做移动APP功能测试,这些因素你得都考虑到~
  7. hadoop示例源码位置
  8. 8.8 Sencha Studio 监视工具( Inspect Tool)
  9. 解决Git 重复输入用户名和密码的问题
  10. HDU2022 海选女主角【最值】
  11. 快读快写:读入输出优化
  12. 多线程和多进程的区别
  13. 【长篇肝文7万字】模电/数电/单片机/计算机组成原理/电力电子常见笔试/面试题(合集)未完更新ing
  14. 华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表
  15. python计算本息总和_python计算等额本金,等额本息
  16. kron matlab_MATLAB中kron命令有什么用途
  17. Python金融行业必备工具
  18. Navicat 设置自动插入时间触发器
  19. 拔开云雾的linux网络
  20. 【Python爬虫学习实践】多线程爬取Bing每日壁纸

热门文章

  1. mysql的字符串等于函数吗_MySQL函数的字符串函数
  2. 深度残差收缩网络(Deep Residual Shrinkage Networks for Fault Diagnosis )
  3. 《前端技巧》清理微信浏览网站的缓存,Cookie
  4. 提问的艺术 | 如何聪明地提问
  5. 数据结构C语言版(答案)
  6. php webcam,如何使用Dynamic Web TWAIN附加组件构建PHP Webcam App
  7. Spring @Autowired 用法
  8. 128陷阱解析(Java中的128陷阱)
  9. 计算机网络 交换机工作原理
  10. AutoIt v3.3.14.2 汉化最新版