mybatis note


mybatis大体流程

一、各路径存放内容​​​​​​​

lib文件夹下放jar包

config下放核心配置文件,核心配置文件加载数据来源配置和映射mapper文件,typeAliases用来定义别名(可用package批量定义)
mappers标签内可配置批量扫描mapper映射文件
使用批量扫描,需要满足两个条件
1:mapper文件必须和mapper接口的文件名一致
2:mapper文件必须和mapper接口在同一个包路径下


model层 写具体的类,如用户的类,内部写私有属性+getset方法

until内放置工具类,mybatis中放置构建会话工厂(作用是把重复的操作拿出来)返回factory

dao层放 用于构建基础类对象的mapper接口和相应的mapper映射的xml文件(内部为具体sql)
注意:如在核心配置文件中使用mapper标签批量扫描,则保持
1:mapper文件必须和mapper接口的文件名一致
2:mapper文件必须和mapper接口在同一个包路径下

service层定义包含于dao层mapper接口内同名的抽象方法,如findUserById这种。

impl 内放置包含实现service层定义接口方法的类。内部
SqlSession session = MybatisUtil.getFactory().openSession();
        UserDao daili = session.getMapper(UserDao.class);
        return daili.findUserByUsernameAndPassword(user);
使用util下的类的静态方法取得factory,然后得到session,再使用代理模式构建dao层类的对象
最后调用构建的dao层类对象的抽象方法。
**此处mybatis底层还是使用原始的方法如下
session.selectOne("dao.UserDao.findUserById", id)
(具体应该是通过mapper映射xml文件内的sql语句的id(名字)构建出方法?)

test 下用来测试
可用@Test进行单元测试


二、执行流程
1.当在test中测试时,创建serviceImpl对象,创建完成后调用内部实现具体功能的方法(增删改查),
2.此方法内部
SqlSession session=MybatisUtil.getFactory().openSession();
通过在util下的MybatisUtil工具类运行其内部的静态方法(即获取输入流的核心配置文件,核心配置文件内配置加载数据源、mapper映射xml文件及采用别名的操作)
接着构建factory对象,提供getFactory()方法
util主要就是获取配置并将重复操作分离出来(创建会话连接)
3。实现方法通过代理模式构建,然后返回在dao层构建的同名方法
UserDao daili = session.getMapper(UserDao.class);
return daili.findUserByUsernameAndPassword(user);

主要是将代码分层,降耦合

三、关于mapper映射文件的配置
1。普通pojo类的映射配置
一个类可以对应数据库中的一张表,比如用户表,订单表。
如 <select id="findUserByUsernameAndPassword" parameterType="user" resultMap="userMap">
   select * from user where username =#{username} and password =#{password}
 </select>
 
 <resultMap type="user" id="userMap">
 <id property="userId" column="user_id"/>
 <result property="username" column="username"/>
 <result property="age" column="age"/>
 <result property="password" column="password"/>
 </resultMap>
 
 *基本pojo类及对应的映射配置文件及同名的dao层接口可以使用逆向工程自动生成
 用该project : generatorSqlmapCustom 生成,简单配置数据源及要生成的表
 
2。一对一关系映射
一对一指的是表中一一对应的数据,比如一个用户对应一个订单号,用association标签,可以新建pojo类,放置包含所有要查的字段的属性
 <select id="findOrdersAndUser" resultMap="ordersMap">
   select * from orders,user 
   where orders.user_id=user.user_id
 </select>
 <resultMap type="orders" id="ordersMap">
     <id property="ordersId" column="orders_id"/>
     <result property="count" column="count"/>
     <result property="status" column="status"/>
     <!-- 使用association 标签将查询结果集剩余字段封装映射到关联的pojo中 -->
     <association property="user" javaType="user">
         <id property="userId" column="user_id"/>
         <result property="username" column="username"/>
         <result property="age" column="age"/>
         <result property="password" column="password"/>
     </association>
 </resultMap>
 
 3.一对多映射
 比如查一个用户对应多个订单,用collection标签,在pojo类中声明一个list,放置查询出来的订单,list内部类型为order类
 <select id="findUserAndOrders" resultMap="userOrdersMap">
     select * from user left join orders on user.user_id=orders.user_id
 </select>
 
 <resultMap type="user" id="userOrdersMap">
     <id property="userId" column="user_id"/>
     <result property="username" column="username"/>
     <result property="age" column="age"/>
     <result property="password" column="password"/>
     <!-- collection 标签用于进行一对多的高级映射,将关联的多条记录映射到pojo的list中 -->
     <collection property="orderList" ofType="orders">
     <id property="ordersId" column="orders_id"/>
     <result property="count" column="count"/>
     <result property="status" column="status"/>
     </collection>
 </resultMap>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
,发送类别,概率,以及物体在相机坐标系下的xyz.zip目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值