当前位置: 首页 > wzjs >正文

网站建设怎么插入视频百度录入网站

网站建设怎么插入视频,百度录入网站,我的网站dede,网站的pv是什么在MyBatis注解式开发里,处理复杂的关联查询可通过多种方式,本文将结合实际场景,详细介绍几种常见的处理方法。 本文目录 1. 使用 Results 和 Result注解进行手动映射2. 使用 SelectProvider动态生成 SQL 1. 使用 Results 和 Result注解进行手…

        在MyBatis注解式开发里,处理复杂的关联查询可通过多种方式,本文将结合实际场景,详细介绍几种常见的处理方法。

本文目录

      • 1. 使用 @Results 和 @Result注解进行手动映射
      • 2. 使用 @SelectProvider动态生成 SQL

1. 使用 @Results 和 @Result注解进行手动映射

当涉及到关联查询时,数据库表的字段和实体类的属性可能无法自动映射,这时可以使用 @Results@Result 注解手动指定映射关系。

假设有 Order(订单)和 Product(商品)两个实体,一个订单可以包含多个商品,需要查询订单信息并关联查询出商品信息。

实体类定义:

// Order 类
@Data
public class Order {private Long id;private String orderNo;private List<Product> products;
}// Product 类
@Data
public class Product {private Long id;private String name;private double price;
}

Mapper接口:

import org.apache.ibatis.annotations.*;
import java.util.List;@Mapper
public interface OrderMapper {@Select("SELECT o.id, o.order_no, p.id as product_id, p.name as product_name, p.price as product_price " +"FROM orders o " +"JOIN order_items oi ON o.id = oi.order_id " +"JOIN products p ON oi.product_id = p.id " +"WHERE o.id = #{orderId}")@Results({@Result(property = "id", column = "id"),@Result(property = "orderNo", column = "order_no"),@Result(property = "products", javaType = List.class,many = @Many(select = "com.shop.mapper.ProductMapper.getProductsByOrderId"))})Order getOrderWithProducts(Long orderId);
}// ProductMapper 接口
@Mapper
public interface ProductMapper {@Select("SELECT * FROM products WHERE id IN (SELECT product_id FROM order_items WHERE order_id = #{orderId})")List<Product> getProductsByOrderId(Long orderId);
}

@Results 注解用于手动指定结果集的映射关系。
@Result 注解中,property 表示实体类的属性名,column 表示数据库表的列名。
@Many 注解用于处理一对多的关联关系,select 属性指定了关联查询的方法。



2. 使用 @SelectProvider动态生成 SQL

对于复杂的关联查询,SQL 语句可能会根据不同的条件动态变化,这时可以使用 @SelectProvider 注解动态生成 SQL。比如,如果需要根据用户输入的条件,动态查询订单及其关联的商品信息。

Mapper接口:

import org.apache.ibatis.annotations.*;
import java.util.List;@Mapper
public interface OrderMapper {@SelectProvider(type = OrderSqlProvider.class, method = "getOrderWithProductsSql")@Results({@Result(property = "id", column = "id"),@Result(property = "orderNo", column = "order_no"),@Result(property = "products", javaType = List.class,many = @Many(select = "com.example.shop.ProductMapper.getProductsByOrderId"))})Order getOrderWithProductsByCondition(@Param("orderId") Long orderId, @Param("productName") String productName);
}// 动态SQL提供类
class OrderSqlProvider {public String getOrderWithProductsSql(@Param("orderId") Long orderId, @Param("productName") String productName) {StringBuilder sql = new StringBuilder("SELECT o.id, o.order_no, p.id as product_id, p.name as product_name, p.price as product_price " +"FROM orders o " +"JOIN order_items oi ON o.id = oi.order_id " +"JOIN products p ON oi.product_id = p.id " +"WHERE 1 = 1");if (orderId != null) {sql.append(" AND o.id = #{orderId}");}if (productName != null && !productName.isEmpty()) {sql.append(" AND p.name LIKE CONCAT('%', #{productName}, '%')");}return sql.toString();}
}

@SelectProvider 注解指定了提供 SQL 语句的类和方法。
OrderSqlProvider 类中的 getOrderWithProductsSql 方法根据传入的参数动态生成 SQL 语句。

http://www.dtcms.com/wzjs/349106.html

相关文章:

  • 可以做推广的门户网站网络营销的优缺点
  • 怎么做一张图片的网站企业培训视频
  • 天津市开发区建设管理局网站网站seo源码
  • 免费视频网站app使用排名手机怎么创建网站
  • 天津百度推广中心福建seo排名
  • 做一个企业网站需要哪些技术外贸营销网站建设介绍
  • wordpress+move插件seo职位描述
  • 北京个人制作网站中国没有限制的搜索引擎
  • 国外什么网站是做外贸百度seo怎么查排名
  • apache限制域名访问网站长春网络优化哪个公司在做
  • 珠海响应式网站建设公司今天的新闻有哪些
  • 给甜品网站做seo石家庄网络seo推广
  • 提供图片做网站的要求百度竞价运营
  • 福州网站建设效果网站优化公司排名
  • 快手直播间挂人气自助网站企业网站seo哪里好
  • 个人优秀网站浏览器下载安装2022最新版
  • 怎么做集合网站防晒霜营销软文
  • 哪个视频网站做视频最赚钱百度关键词排名怎么做
  • 瑞安市做网站百度搜索什么关键词能搜到网站
  • 巴青网站制作近期重大新闻事件10条
  • 小程序开发费用计入什么科目上海网站seo策划
  • 我自己做个网站怎么做网络营销课程大概学什么内容
  • 网站建设需要提供什么东西广州seo公司官网
  • 以学校为目标做网站策划书竞价恶意点击器
  • 做机加工的网站环球网疫情最新动态
  • 建设部网站一级开发资质盐城seo培训
  • 可以看网站的浏览器湖南长沙最新情况
  • 做外贸网站需要什么广告联盟全自动赚钱系统
  • 做视频网站视频源宁波seo网络推广优化价格
  • 屏山县龙华镇中心村建设招标网站网络销售的方法和技巧