1. 程式人生 > >MyBatis小白鼠003-使用註解

MyBatis小白鼠003-使用註解

1.MyBatis提供了無xml配置的使用方式。

這裡,我們先做一點小小的改動,將dao/BootUserMapper.java 中的@Mapper註解取消,在XXXApplication.java中新增註解:

@MapperScan("cn.newtips.bootmybatis.dao")
@SpringBootApplication
@MapperScan("cn.newtips.bootmybatis.dao")
public class BootmybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootmybatisApplication.class, args);
    }
}

這樣,我們就可以愉快的在dao包下面隨意的寫更多的Mapper了。

2為了更好的做比較,我們新建了一個新表,團隊表boot_team

CREATE TABLE `boot_team` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `team_name` VARCHAR(255) DEFAULT NULL,
  `team_type` VARCHAR(255) DEFAULT NULL,
  `team_remark` VARCHAR(255) DEFAULT NULL,
  `team_leader` VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

insert into `boot_team` (`id`, `team_name`, `team_type`, `team_remark`, `team_leader`) values('1','huoshan','a','a test','tom');

然後仿照前面的bootUser,重新寫一套entity、dao、service、controller等程式碼。

注意,我們不新增resource下的xxxMapper.xml檔案。

在dao包下寫程式碼,更改為如下,我們使用了@Select註解來進行實現我們的功能。

public interface BootTeamMapper {

    // 使用註解方式
    @Select("select * from boot_team where id = #{id}")
    BootTeam getTeamById(Integer id);

    @Select("select * from boot_team where team_leader = #{leader}")
    BootTeam getTeamByLeader(@Param("leader") String leader);
}

寫完之後的程式碼結構如下圖所示,可以看到整體的內容。

 這樣基本就完工了。

那麼問題來了,

問題一:

為什麼我們在dao中寫的是一個interface?