consulta conjunta de múltiplas tabelas mybatis, um para muitos

Um para muitos

O essencial

A chave estrangeira da tabela de contas refere-se à chave primária da tabela do usuário, então a tabela da conta é a tabela escrava e a tabela do usuário é a tabela mestre

Mapeamento de relacionamento um para muitos: a entidade da tabela principal deve conter uma coleção de referências da entidade da tabela


premissa:

  • Duas tabelas: usuário da tabela do usuário, conta da tabela da conta
  • Há uma chave estrangeira na tabela da conta que faz referência à chave primária da tabela do usuário
  • O toString da classe de entidade da tabela do usuário e a classe de entidade da tabela da conta devem ser reescritos (caso contrário, não estará visível quando a consulta for lançada)

alcançar

  1. Defina um método em UserDao
public interface UserDao{
    
    
	//查询所有用户和
	List<User> findAll();
}
  1. Propriedades na classe de entidade do usuário
public User{
    
    
	private Integer id;
	private String name;
	private String password;
	//一对多的关系映射,主表实体中有从表是实体的集合引用
	private List<Account> accounts;
	//重写toString 
	//get set方法
}
  1. Instruções SQL preparadas com antecedência
select
	u.*,a.id as aid ,a.uid,a.money
from
	user u
left join
	account a
on
	u.id = a.uid
  1. Grave a relação de mapeamento no arquivo de mapeamento
<!--定义User的resultMap 一对多查询-->
<!--id 随便起一个名字 type:类型仍然是一个User 配置了别名所以直接写类名-->
<resultMap id="UserAccountMap" type="User">
	<id property="id" column="id"></id>
	<result property="name" column="name"></result>
	<result property="password" column="password"></result>
	
	<!--配置user对象中accounts集合的映射-->
	<!--property:User对象的Account属性名-->
	<!--ofType:集合中元素的类型(用了别名 不然要写权限定类名)-->
	<!--一对多需要用 collection标签 -->
	<collection property="accounts" ofType="Account">
		<id property="id" column="aid"></id>
		<result property="uid" column="uid"></result>
		<result property="money" column="money"></result>
	</collection>
</resultMap>

为什么是column是aid 因为查询的有两个id 一个用户id 一个 账户id 为了区分在起了个别名
同时 sql语句也要写上  a.id as aid
  1. Escreva a classe de teste
    Isso irá consultar os resultados.

Próximo artigo de atualização: consulta de múltiplas tabelas mybatis, muitos para muitos

Acho que você gosta

Origin blog.csdn.net/m0_46409345/article/details/108707126
Recomendado
Clasificación