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="userAddress" column="address" />
        <result property="userSex" column="sex" />
        <result property="userBirthday" column="birthday" />
    </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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值