sql >> Database >  >> RDS >> Mysql

Een op veel relatie in MyBatis

Ik heb geprobeerd deze vraag te volgen en ik heb een een-op-veel-relatie in Mybatis gemaakt met behulp van annotaties. Hieronder volgt mijn code,

UserMapper.java

@Select("SELECT teamId, name FROM TEAM")
    @Results(value = {
        @Result(property="teamId", column = "teamId"),
        @Result(property="name", column = "name"),
        @Result(property="players", column="teamId", javaType= List.class, [email protected](select="selectPlayers"))
    })   
public List<Team> getAllTeams();

@Select("SELECT * FROM PLAYER WHERE teamId = #{teamId}")
    @Results(value={
        @Result(property="playerId", column ="playerId" ),
        @Result(property="name", column = "name")
    })
List<Player> selectPlayers(String teamId);

Mijn Team.java :

public class Team {

    private Long teamId;
    private String name;
    private List<Player> players;

    //...getters and setters

}

Player.java :

public class Player {

    private Long playerId;
    private String name;
    private Team team;

    //...getter and setters

}

team.sql

CREATE TABLE `team` (
  `teamId` bigint(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`teamId`)
)

speler.sql

CREATE TABLE `player` (
  `playerId` bigint(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `teamId` bigint(10) DEFAULT NULL,
  PRIMARY KEY (`playerId`),
  KEY `FK_TEAM_ID` (`teamId`),
  CONSTRAINT `FK_TEAM_ID` FOREIGN KEY (`teamId`) REFERENCES `team` (`teamId`)
)

UserServiceImpl.java

@Autowired
private UserMapper userMapper;

...
/* Get the list of teams with players data */
List<Team> teams = userMapper.getAllTeams();
...

Ik hoop dat dit nuttig is voor toekomstige lezers.



  1. Vereist om deel te nemen aan 2 tafels met hun FK's in een 3e tafel

  2. Database naamgevingsconventies door Microsoft?

  3. Hoe functieparameterlijsten te krijgen (zodat ik een functie kan laten vallen)

  4. Hoe los je een MySQL Incorrect key file-fout op als je de tabel niet kunt repareren?