MyBatis小白鼠003-使用註解
阿新 • • 發佈:2018-12-16
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?