mybatis在指定库建表_Mybatis 数据库多表关联分页的问题

举个例子:

有两个实体类 User 和 Address

public class User {

private int id;

private String username; // 用户名

private List

addresses;

// getter setter...

}

public class Address {

private int id;

private String detail; // 详细地址

private User user; //所属用户

// getter setter...

}

数据库:

create table t_user(

id int(10) primary key auto_increment,

username varchar(50)

);

create table t_address(

id int(10) primary key auto_increment,

detail varchar(255),

user_id int(10),

CONSTRAINT FOREIGN KEY (user_id) REFERENCES t_user(id)

);

mybatis映射配置:

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select *,

ta.id as 'a_id',

tu.id as 'u_id'

from t_user tu

left join t_address ta on ta.user_id=tu.id

(username like #{name})

order by ${sort}

${order}

asc

limit #{pageOffset},#{pageSize}

select count(*)

from t_user tu

left join t_address ta on ta.user_id=tu.id

(username like #{name})

用户和地址的关系为:一个用户有多个地址,一个地址只能属于一个用户,一对多

假设现在的需求是,分页查询用户,用表格显示,并把每个用户的所有地址显示出来

那么问题来了

按照上面的查询返回的分页的数据是没有问题的,但是分页的总记录数却是不对的。

比如查出来的数据(数据库数据,并非页面显示)如下:

u_id

username

a_id

detail

1

user1

1

北京市海淀区

1

user1

2

北京市朝阳区

2

user2

3

天津市

因为我的需求是分页显示用户,所以一个用户就是一条数据在页面显示大概是这样子,理论上是两条数据,

用户id

用户名

地址

1

user1

1. 北京市海淀区

2. 北京市朝阳区

2

user2

1. 天津市

共1页,共2条数据,每页显示10条

但是,按mybatis的find_count配置 查出来是3条,这种问题如何解决?

查询count(*)的时候将所有left join 后面关联的表去除吗?这样会不会导致返回的数据不准确

补充说明:感觉大家是理解错我的意思了,其实我这个问题主要是在SQL 上,而不再mybatis上,因为我查询出来的数据映射完毕之后是完全没有问题的,只是在分页的总记录数上出现了问题,导致分页不正确

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值