IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> mybatis的curd、参数深入及结果集、SqlMapConfig.xml中的标签 -> 正文阅读

[Java知识库]mybatis的curd、参数深入及结果集、SqlMapConfig.xml中的标签

源码地址

1、回顾mybatis的自定义再分析和环境搭建+完善基于注解的mybatis

自定义mybatis开发流程图

2、mybatis的curd(基于代理dao的方式)

2.1模糊查询-两种不同的模糊查询

preparedstatement的参数占位符

Quicker_20210627_223018

statement对象的字符串拼接对象

Quicker_20210627_222738

2.2保存中的细节

<!--保存用户-->
<insert id="saveUser" parameterType="com.ha.domain.User">
    <!--配置插入数据的id-->
    <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
        select last_insert_id();
    </selectKey>
    INSERT  into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday});
</insert>

Quicker_20210629_102345

3、myabtis中的参数深入及结果集的深入

3.1mybatis的常数

3.1.1 parameterTypee(输入类型)

3.1.2传递简单类型

3.1.3 传递pojo对象

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

? OGNL表达式:Object Graphic Navigation Language 对象图导航语言

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

? 类中的写法: user.getUsername();

OGNL表达式写法: user.username 

? 问:mybatis中为什么能直接写username,而不用user?

? 答:在parameterType中已经提供了属性所属的类,所以此时不需要所以此时不需要写对像名mybatis

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

? OGNL表达式:Object Graphic Navigation Language

? 对象 图 导航 语言

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

? 类中的写法: user.getUsername();

? OGNL表达式写法: user.username

? 问:mybatis中为什么能直接写username,而不用user?

? 答:在parameterType中已经提供了属性所属的类,所以此时不需要所以此时不需要写对像名

3.1.4传递pojo包装对象

? 开发中通过poi传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件), 这时可以使用包装对象传递输入参数
? Pojo类中包含pojo.
? 需求:根据用户名查询用户信息,查询条件放到 QueryVo的user属性中。

3.2 Mybatis的输出结果封装

3.2.1 resultType(输出类型)

? tips: mysql数据库在win系统下区分大小写/linux系统严格区分大小写

? 属性名个数据库列名不一致 (可避免安全问题),如何封装?

? 方法1:取别名(执行效率高)

<select id="findAll" resultType="com.ha.domain.User">
    SELECT * from user;
</select>

? ------------------------------------------------------->

<select id="findAll" resultType="com.ha.domain.User">
    SELECT id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user;
</select>

? 方法2:resultMap (开发效率高)

<!--配置 查询结果的列名和实体类的属性名的对应关系-->
<resultMap id="userMap" type="com.ha.domain.User" >
    <!--主键字段的对应-->
    <id property="id" column="userId" />
    <!--非主键字段的对应-->
    <result property="username" column="userName" />
    <result property="address" column="userAddress" />
    <result property="sex" column="userSex" />
    <result property="birthday" column="userBirthday" />
</resultMap>

同时需要在对应的resultType 改为resultMap

<!--查询所有-->
<select id="findAll" resultMap="userMap">
    SELECT * from user;
</select>

3.2.1.1 输出简单类型

3.2.1.2 输出pojo对象

3.2.1.2 输出pojo列表

4、mybatis中基于传统dao的方式2编写dao的实现类)——了解

4.1编写dao实现类Mybatis的执行过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pruY1eUJ-1627657332005)(https://cdn.jsdelivr.net/gh/hairlyOwl/photo@master/非常重要的一张图-分析编写dao实现类Mybatis的执行过程(1)].24l0ajqh2sv4.png)

4.2使用代理dao的分析

使用代理dao的分析

5、mybatis中的配置(主配置文件:SqlMapConfig.xml

properties标签

<!--配置properties
    可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
    resource属性:
        用于指定配置文件的位置,是按照类路径的写法,并且必须存在与类路径下
    url属性:
        是要求按照url的写法来写地址
        URL: Uniform Resource Locator 统一资源定位符。可以唯一标识一个资源的位置。
        它的写法
             http://localhost:8080/mybatisserver/demo1servlet
              协议     主机     端口          URI
        URI: Uniform Resource Identifier 统一资源标识符,应用中唯一定位一个资源-->
<!--1.直接在标签内部配置-->
<!--<properties>
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</properties>-->
<!--2.1 resource属性-->
<!--<properties resource="jdbcConfig.properties" />-->
<!--2.2 url属性-->
<properties url="file:///E:/ideawork/mybatisWK/day02_eesy_01mybatisCURD/src/main/resources/jdbcConfig.properties" />

typeAliases标签

<!--使用typeAliases配置别名,它只能配置domain中类的别名-->
<typeAliases>
    <!-- typeAlias用于配置别名; type属性指定的是实体类全限定类名; alias 属性指定别名,当指定了别名就不再区分大小写-->
    <!--<typeAlias type="com.ha.domain.User" alias="user" />-->

    <!--用于指定配置别名的包,当指定之后,该包下的实体类都会注册别名,且类名是别名不再区分大小写-->
    <package name="com.ha.domain"/>
</typeAliases>

mappers标签

<mappers>
    <!--<mapper resource="com/ha/dao/IUserDao.xml" />-->
    <!--package标签是用于指定dao接口所在的包,指定后就不需要写mapper,resource,或者class-->
    <package name="com.ha.dao"/>
</mappers>
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:29:19  更:2021-07-31 16:31:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 12:07:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码