sql >> データベース >  >> RDS >> Mysql

MyBatisの1対多の関係

    私はこの質問に従おうとしましたが、アノテーションを使用してMybatisで1対多の関係を作成しました。以下は私のコードです

    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);
    

    私の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`)
    )
    

    player.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();
    ...
    

    これが将来の読者に役立つことを願っています。



    1. SQLiteのCount()結果から重複を削除

    2. 名前付きのMySql主キー制約

    3. MYSQLデータベースのすべての外部キーを削除します

    4. SQLServerAcademyパートIIを使用したMicrosoftAccessにご参加ください