Mybatis框架实现CRUD操作

自定义mybatis流程

mybatis基于代理dao的CRUD操作(重点)
  • E:\JAVAworkspace\mybatis_CRUD
CRUD中可能遇到的问题:参数的传递及返回值的封装
  • parameterType(输入类型):

    • 传递简单类型

    • 传递pojo对象:mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。

      OGNL表达式:Object Graphic Navigation Language

      ​ 对象 图 导航 语言

      它是通过对象的取值方法来获取数据。在写法上把get给省略了,比如我们获取用户的名称:

      类中的写法:user.getUsername()

      OGNL的写法:user.username

      mybatis 中为什么能直接写username,而不用user.原因是在parameterType中已经提供了属性所属的类,所以此时不需要写对象名。

    • 传递pojo包装对象:当查询条件是综合的查询条件,不仅包括用户查询条件还包括其他的查询条件时(例如用户购买商品的信息),可以使用包装对象传递输入参数。

  • resultType(输出类型)

    • resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。
    • 如果sql查询字段名和pojo属性名不一致,可以对SQL列名起别名,也可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。
    <!--起别名:执行效率较高-->
    SELECT id AS userId,username as userName,address AS userAddress,sex AS userSex, birthday AS userBirthday FROM USER
    
    <!--resultMap:开发效率较高-->
    <!--配置 查询结果的列名和实体类的属性名的对应关系--><resultMap id="userMap" type="com.ssm.domain.User"><!--主键字段的对应--><id property="userId" column="id"></id><!--非主键字段的对应--><result property="userName" column="username"></result><result property="userAddress" column="address"></result><result property="userSex" column="sex"></result><result property="userBirthday" column="birthday"></result></resultMap><!--查询所有--><select id="findAll" resultMap="userMap">SELECT * FROM USER</select>
    
    • resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询
介绍mybatis传统dao方式的使用(自己编写dao的实现类)
  • E:\JAVAworkspace\mybatis_CRUD_dao
mybatis主配置文件中的常用配置
  • properties标签:可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息

    • resource属性:常用的,用于指定配置文件的位置,是按照路径的写法来写,并且必须存在于类路径下
    <properties resource="jdbcConfig.properties"></properties>
    
    • url属性:是要求按照url的写法来写地址

      • URL:Uniform Resource Locator 统一资源定位符,可以标识唯一的一个资源的位置
      • 它的写法: http://location:8080/mybatisserver/demo1Servlet
        协议 主机 端口 URI
    <properties url = "file:///E:/JAVAworkspace/mybatis_CRUD/src/main/resources/jdbcConfig.properties">
    </properties>
    
  • typeAliases标签:使用typeAliases配置别名,他只能配置domain类中的别名

    • typeAlias用于配置别名,type属性指定实体类全限定类名,alias属性指定别名,当指定了别名就不再区分大小写
    <typeAlias type="com.ssm.domain.User" alias="user"></typeAlias>
    
    • package用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写
    <package name="com.ssm.domain"></package>
    
    • 解释Integer、int、java.lang.Integer的写法
  • mappers标签的子标签:

    • package标签用于指定dao接口所在的包,当指定了之后就不需要再写mapper以及resource(xml解析)或者calss(注解)了
    <package name="com.ssm.dao"></package>
    

Mybatis框架实现CRUD操作相关推荐

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  2. MyBatis学习总结(2)——使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下:

  3. 使用hibernate框架完成CRUD操作

    前言 : Hibernate框架是一个持久层技术的一个解决方案,使用很简单的配置就可以完成许多之前需要很多JDBC代码才能完成的增删改查操作 , 在这种持久层框架中 , ORM思想非常重要 在ecli ...

  4. mybatis crud_MyBatis教程– CRUD操作和映射关系–第1部分

    mybatis crud CRUD操作 MyBatis是一个SQL Mapper工具,与直接使用JDBC相比,它极大地简化了数据库编程. 步骤1:创建一个Maven项目并配置MyBatis依赖项. & ...

  5. 基于自定义Mybatis框架实现数据库操作

    一.场景模拟 基于自定义Mybatis框架和已有的Mysql数据库Mybatis,查询所有用户信息. 二.创建工程并引入自定义Mybatis框架的坐标 <?xml version="1 ...

  6. 使用Mybatis框架实现CRUD

    文章目录 前言 1.分析JDBC操作问题 2.原始JDBC开发存在的问题 一.Mybatis相关概念 1.1 什么是Mybatis? 1.2 对象/关系数据库映射(ORM) 1.3 Mybatis历史 ...

  7. mybatis crud_MyBatis教程– CRUD操作和映射关系–第2部分

    mybatis crud 为了说明这一点,我们正在考虑以下示例域模型: 会有用户,每个用户可能都有一个博客,每个博客可以包含零个或多个帖子. 这三个表的数据库结构如下: CREATE TABLE us ...

  8. mybatis 两种CRUD操作操作(资源来子孤傲苍狼)

    最简单的查询 进阶1 封装util的查询 进阶2   添加一个mapper接口(同时也要有util) 进阶3 添加properties文件 进阶4 给实体类路径一个缩写 在用到的地方可以直接写缩写 例 ...

  9. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

最新文章

  1. 驱动数字经济加速,摩尔线程发布全新元计算架构MUSA和GPU产品
  2. struts的国际化
  3. WebClient UI的Automatic Delta Handling是什么意思
  4. 生物计算机科学家,科学家开发细胞计算机 人体就是一台大型计算机
  5. 三连击(洛谷-P1008)
  6. 【SpringCloud】 spring cloud 2021年 技术 更新换代 停更 等信息
  7. popwindow弹窗
  8. android中的多渠道打包,Android 多渠道打包简析
  9. 第一:Python发送邮件时定义文本乱码
  10. Qt4_内置的窗口部件类和对话框类
  11. 接口自动化测试框架实例教程
  12. 别人是怎么将图片贴在屏幕上的?
  13. 恒流源差分放大电路静态分析_多级放大电路以及差分放大电路
  14. Codeforces 950C-Zebras(模拟构造)
  15. 积分分汇界面将判断放到D层后,D层的写法
  16. 2019年华东师范大学计算机与软件工程学院保研夏令营经历
  17. HTML网页一键变黑白色调
  18. 动态磁盘和基本磁盘转换
  19. java 无线网卡_中兴新支点安装博通wifi无线网卡驱动
  20. 什么是L1行情接口?

热门文章

  1. 2014年中国移动游戏行业研究报告
  2. 【软考系统架构设计师】2017下系统架构师案例分析历年真题
  3. “共轭”(conjugate)是什么意思?
  4. 2023年五一数学建模 B 题过程与结果
  5. 2017互联网女皇报告中文版来了(PPT+文字版)
  6. 西门子变频器SINAMICS G120P系列特点有哪些?
  7. 7.计算比例工具工具类
  8. Dockerfile及相关知识拓展
  9. w3school没有java的教程_javafx w3school教程
  10. python使用docx模块读写docx文件的方法与docx模块常用方法