我的mapper是这个样子的
package com.wzkj.manage.mapper;
import java.util.List;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.annotations.Many;
import com.wzkj.manage.mapper.provider.RouteProvider;
import com.wzkj.web.entity.Route;
public interface RouteMapper {
@SelectProvider(type = RouteProvider.class, method = "getById")
@Options(flushCache = true, timeout = 20000)
@Result(property="list",column="id",javaType=List.class,many=@Many(select="com.wzkj.manage.mapper.RoutePointMapper.getByRoute"))
public Route getById(@Param("id") int id);
}
bean
package com.wzkj.web.entity;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.type.Alias;
@Alias("wz_route")
public class Route {
private Long id;
private Long type_id;
private String route_name;
private String route_profile;
private Float distance;
private String tips;
private boolean is_top;
private String cover_img;
private Long view_count;
private Timestamp create_time;
private List<RoutePoint> list;
public String getRoute_name() {
return route_name;
}
public void setRoute_name(String route_name) {
this.route_name = route_name;
}
public String getRoute_profile() {
return route_profile;
}
public void setRoute_profile(String route_profile) {
this.route_profile = route_profile;
}
public Float getDistance() {
return distance;
}
public void setDistance(Float distance) {
this.distance = distance;
}
public String getTips() {
return tips;
}
public void setTips(String tips) {
this.tips = tips;
}
public boolean isIs_top() {
return is_top;
}
public void setIs_top(boolean is_top) {
this.is_top = is_top;
}
public Timestamp getCreate_time() {
return create_time;
}
public void setCreate_time(Timestamp create_time) {
this.create_time = create_time;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getType_id() {
return type_id;
}
public void setType_id(Long type_id) {
this.type_id = type_id;
}
public Long getView_count() {
return view_count;
}
public void setView_count(Long view_count) {
this.view_count = view_count;
}
public String getCover_img() {
return cover_img;
}
public void setCover_img(String cover_img) {
this.cover_img = cover_img;
}
public List<RoutePoint> getList() {
return list;
}
public void setList(List<RoutePoint> list) {
this.list = list;
}
}
package com.wzkj.manage.mapper;
import java.util.List;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import com.wzkj.manage.mapper.provider.RoutePointProvider;
import com.wzkj.web.entity.RoutePoint;
public interface RoutePointMapper {
@SelectProvider(type = RoutePointProvider.class, method = "getById")
@Options(flushCache = true, timeout = 20000)
public RoutePoint getById(@Param("id") int id);
@SelectProvider(type = RoutePointProvider.class, method = "getByRoute")
@Options(flushCache = true, timeout = 20000)
public List<RoutePoint> getByRoute(@Param("id") int id);
@DeleteProvider(type = RoutePointProvider.class, method = "del")
@Options(flushCache = true, timeout = 20000)
public int delete(@Param("id") int id);
@InsertProvider(type = RoutePointProvider.class, method = "add")
@Options(flushCache = true, timeout = 20000)
public int add(@Param("bean") RoutePoint bean);
}
为什么我查询出来的时候list为null 数据库里面是有数据的
经过分析发现
@SelectProvider(type = RouteProvider.class, method = "getById")
@Options(flushCache = true, timeout = 20000)
@Result(property="list",column="id",javaType=List.class,many=@Many(select="com.wzkj.manage.mapper.RoutePointMapper.getByRoute"))
public Route getById(@Param("id") int id);
}
的select="com.wzkj.manage.mapper.RoutePointMapper.getByRoute"这个方法完全没有执行,到底是怎么回事呢
相关推荐
本篇文章将重点讲解 MyBatis 中的自关联查询,以“新闻栏目”为例,探讨如何实现一对多的关系。 在新闻系统中,栏目(Category)与新闻(News)通常存在一对多的关系:一个栏目可以包含多个新闻,而一个新闻则属于...
Mybatis基于注解实现多表查询功能 Mybatis基于注解实现多表查询功能是指使用Mybatis框架中的注解来实现多表查询的功能。这种方法可以简化配置,提高开发效率。下面我们将详细介绍如何使用Mybatis基于注解实现多表...
总的来说,这个案例涉及了Mybatis注解的使用、多表联合查询、分页查询和业务层的实现等多个知识点。通过深入学习和实践,开发者可以更加熟练地运用Mybatis进行复杂的数据库操作,提升项目的开发效率和质量。
本示例将探讨如何在Spring环境中实现MyBatis的关联查询,包括一对多、一对一和多对多关系的处理。理解这些关联关系对于构建复杂的业务逻辑至关重要。 首先,我们需要配置Spring与MyBatis的整合。这通常涉及以下几个...
总结来说,Mybatis的一对多关联查询主要依赖于映射关系的配置,无论是通过XML文件还是注解,都能够方便地处理一个实体对象与其关联的多个子对象的查询与数据绑定。理解并熟练掌握这两种方法,将有助于我们在实际开发...
首先,MyBatis的核心是XML或注解方式配置的SQL映射文件,它定义了SQL查询、存储过程以及复杂的数据映射。在这个实例中,你可能会看到一个名为`StudentMapper.xml`的文件,其中包含了与学生相关的SQL查询,例如查询...
在这个场景中,"mybatis关联查询问题(一对多、多对一)"是核心关注点,这涉及到数据库设计中的关系映射以及在Mybatis中如何处理这些关系。 1. **一对多关联**: 在数据库设计中,一对多关联是指一个表中的记录可以...
这些注解可以直接与方法关联,使得每个方法对应一个数据库操作。 在该项目中,开发者可能创建了一个基类,让实体类的Service层继承这个基类。这样做可以实现增删查改的通用化。基类会提供如insert、update、...
MyBatis 提供了强大的关联查询功能,例如使用 @Results 注解指定关联关系。 实体类设计 在本示例中,我们设计了三个实体类:User、Company 和 Account。每个实体类都包含了基本的 getter 和 setter 方法。 ...
【标题】"Mybatis系列教程Mybatis注解开发共9页.pdf" 提供的是一个关于Mybatis框架注解开发的教程,重点在于讲解如何在Mybatis中使用注解进行数据库操作。Mybatis是一个轻量级的Java持久层框架,它允许开发者通过...
通过自定义 `resultMap`,可以方便地处理嵌套查询和联合主键等问题。 5. 自动类型转换:Mybatis 提供了自动类型转换功能,可以根据 Java 类型和数据库类型进行自动匹配,简化了数据转换的代码。此外,还可以自定义 ...
虽然在简单的查询中可以直接映射对象,但在面对复杂的查询结构,如嵌套结果集、联合查询等时,可能需要定义`@ResultMap`来帮助Mybatis理解如何映射结果。 7. **Mapper接口和SqlSession**: 在实际应用中,你需要...
MyBatis 的注解主要包括 `@Select`、`@Insert`、`@Update` 和 `@Delete`,它们分别用于定义查询、插入、更新和删除操作的SQL语句。此外,还有 `@Param`、`@Result` 和 `@Results` 等注解用于参数映射和结果集处理。...
- 对于数据库操作,MyBatis的注解如@Select、@Insert、@Update和@Delete可以直接在Mapper接口的方法上使用,将SQL语句与Java代码关联。 - MyBatis的配置文件(mybatis-config.xml)中,设置数据源和...
关联Java类与Mapper XML文件的关键在于注解和XML映射文件的正确设置。在Mapper接口的Java类中,你会看到类似这样的注解`@Mapper`,这个注解告诉Mybatis这是一个Mapper接口。每个方法都对应XML映射文件中的一个SQL...
然后编写基于注解的关联查询,一对多查询,通过学习可以了解MyBatis中常用注解的主要作用,并能够掌握这些注解在实际开发中的应用。在MyBatis框架中,这些注解十分重要,熟练的掌握它们能够极大的提高开发效率。
在实际开发中,我们经常需要进行分布查询,也就是多个表之间的联合查询,MyBatis提供了丰富的功能来处理这种情况。本篇文章将深入探讨MyBatis中的分布查询、`resultType`与`resultMap`的用法,并分享新手学习MyBatis...
关联映射是MyBatis通过XML配置文件或注解来定义实体类之间的关系。这种映射允许我们在查询时自动处理关联对象,而无需手动编写复杂的SQL语句。关联映射分为嵌套查询(Nested Select)和嵌套结果(Nested ResultMap)...
6. **查询优化**:在实际应用中,我们还需要关注性能问题,如是否需要缓存结果,以及如何避免N+1查询问题。有时,通过一次性获取所有关联数据,然后在内存中进行处理,可以提高查询效率。 在提供的压缩包文件...
Mybatis关联映射是数据库操作中的一个重要概念,它允许我们在SQL查询中处理一对多、多对一、多对多等复杂关系。在这个"Mybatis关联映射Demo"中,我们将深入探讨如何在Mybatis框架中实现这些关系映射,以便更好地理解...