mysql 8.05 my.ini配置_Mybatis(二)[SqlMapConfig文件配置、输入输出参数映射解读] 菜鸟日记--day05(上)...

Mybatis(二)[SqlMapConfig文件配置、输入输出参数映射解读]–day05 上

一、SqlMapConfig配置

1.properties属性配置

1)单条属性配置 不建议使用

2) 从配置文件中读取配置

优点:sqlMapConfig.xml 中配置信息过多,单独拆分出去便于修改

加载db.properties文件下的参数配置

db.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/taotao?characterEncoding=utf-8

jdbc.username=root

jdbc.password=root

属性名尽量用特殊写法,不易重复如:xxx.xxx.x 在原因获取属性优先级。

这里有一个还没解决的问题,如何加载指定的多个配置文件,不会插个眼

3)从Mapper.xml 文件中获取。

resultType="com.test.mybatis.pojo.TbUser">

select * from tb_user where id=#{id}

select * from tb_user where id=#{id}

如果这里的#{id} 写成上面 1) 2) 中配置的属性名如:jdbc.url 将会将 1) 2)中的同名属性覆盖

4) 配置加载优先级

顺序

1 sqlMapConfig.xml 中定义的配置属性参数:1)

2 db.properties resource引入配置 2)

3 Mapper映射文件中的参数 3)

优先级:

引入顺序执行同时,执行的是覆盖操作,所以优先级排序正好相反 3)→2)→1)

2.settings 设置

全局参数配置(调整运行参数:开启二级缓冲、延迟加载等 如果设置错误将会影像程序正常执行)

详细配置参数表

3.typealiases 别名配置

在statement(Mapper映射文件 select、insert。。。 )中使用全限定名输入费劲。。可以通过定义别名的方式来简化这个输入。

定义别名(单个定义)

批量定义,扫描包

生成的别名就是包下的各个类的类名(首字母大小写都可以)

4.typeHandlers

通过typeHandlers可以完成java类型和jdbc类型的转换

比如这里的输入参数 long 实际后面sql语句执行过程中使用的是转化过的jdbc类型,这一转化功能就由typeHandlers类型处理器来实现

默认支持很多一般情况下就够用了

5.mappers

**单条映射配置:**resource 指定单个映射文件的位置

//

**单条映射配置:**class 指定Mapper接口

多条映射配置(扫描包形式)

二、包装类型输入输出映射

1.输入映射

用于复杂的高级查询,这时候输入简单类型、HashMap或者pojo类型都无法实现查找的要求。

例如: 想要查找3天内买过指定类型商品的5位女性客户信息

显然输入简单类型、HashMap、User类、订单类。。都不合适

那么可以将用到的查询条件进行封装:将用户类,订单类,商品类、商品类型类还有查询条数这些相关信息封装在一个Vo类中。然后将查询依据的属性属性统一起来作为搜索条件。

**也可以将User类 写一个扩展类 顾客类 封装进Vo类中。

SQL 语句中

使用这个Vo类做为输入参数,Vo类中的一级属性(比如查询数目) 可以直接通过属性名来获取, 获取属性(如User)的内部属性(如sex(性别))依照User.sex 格式来写,没啥说的废话一句。

2.输出映射

1)简单类型

只有输出结果一行一列的情况下才会使用(谁说的?(好吧视频老师说的),看好多帖子也是这样写的,我按用户名查找用户id也可以使用简单类型啊,返回List列表也是可以的说)

2)HashMap类型

输出的列名作为key,每行结果作为value。同样接口返回类型判断如使用selectList,将会返回一个List数组HashMap作为元素。

3) pojo类型

pojo类型对象作为返回参数类型,有如下三种情况

1)搜索结果列和pojo对象属性一样多(每行对应一个属性)。返回类型为pojo 没有异议

2)列不够用来对应每条属性。 返回的pojo类型 不全 例如 如果select 不对 name字段进行查询

3)列没有能用来和任意一条属性对应的。(不会创建pojo对象)

上面的应该没有异议

因为看的视频学习的,没有介绍查询结果列 比pojo对象属性多的情况

我来试试

首先 :最简单的 在查询结果集中随便插入一行

select A=1, * from tb_user

这一行 (之前用sql server写)很简单的沙雕语句,居然也会出错。

经过一番实验搜索,看到mysql二层查询给的灵感

正确语句闪亮登场。。。

select 1 A, tb_user.* from tb_user

因为一句sql语句高兴成这样,我也是醉了。

好了,有了这一行sql 语句可以去实验了。是爆错(pojo吃撑),还是舍弃呢

resultType="com.test.mybatis.pojo.TbUser">

select 1 A, tb_user.* from tb_user where username like '%${value}%'

实验结果是舍弃,并不会报错

4)ResultMap

因为3)中的种种问题,使用ResultMap代替ResultType

记一下思路,只学到最简单常用的

1.定义resultMap和相关类型的映射

具体定义

这个是引用比较完全的配置 未测试等用再看

然后就是后面statement的resultMap=“resultMap的id”

先到这,今天进度好慢,好像出了大问题。 ——_——。。

含着泪标题写的上,晚上还得加把劲。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值