上一篇文章《SpringBoot系列-整合Mybatis(XML配置方式)》介紹了XML配置方式整合的過程,本文介紹下SpringBoot通過注解方式整合Mybatis的過程。
一、常用注解說明
- @Mapper
可以給接口自動生成一個實現類,讓spring對mapper接口的bean進行管理,並且可以省略去寫復雜的xml文件。
- @Options
配置映射語句的屬性。例如:@Options(useGeneratedKeys = true, keyColumn = "id"):指定表的自增主鍵並自動綁定到實體類對象。
- @Result
修飾返回的結果集,關聯實體類屬性和數據庫字段一一對應,如果實體類屬性和數據庫屬性名保持一致,就不需要這個屬性來修飾。
- @Param
如果你的映射方法的形參有多個,這個注解使用在映射方法的參數上就能為它們取自定義名字。若不給出自定義名字,多參數(不包括 RowBounds 參數)則先以 "param" 作前綴,再加上它們的參數位置作為參數別名。例如 #{param1}, #{param2}。
- @Select、@Delete、@Insert、@Update
這四個注解分別代表將會被執行的 SQL 語句。它們用字符串數組(或單個字符串)作為參數。如果傳遞的是字符串數組,字符串之間先會被填充一個空格再連接成單個完整的字符串。
二、實戰
新建一個spring boot項目spring-boot-mybatis-annotation,其他代碼上一篇文章已經有了,下面列下注解版本的主要代碼:
1.映射類UserMapper
@Mapper
public interface UserMapper {
/*
* 查詢 所有用戶
*/
@Select("SELECT * FROM user ")
List<User> queryAllUsers();
/*
* 新增數據,並把主鍵綁定到User實體類
*/
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into User(name,password) values (#{name},#{password})")
public int add(User user);
}
2.添加訪問控制層
UserController代碼如下:
/**
* UserController
*
* @Author: java_suisui
*/
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查詢 所有用戶
*/
@GetMapping("/queryAllUsers")
public List<User> queryAllUsers() {
return userService.queryAllUsers();
}
@GetMapping("/add")
public User add(User user) {
int num = userService.add(user);
return user;
}
}
三、測試
1.測試查詢所有用戶
本地打開瀏覽器,訪問http://localhost:8080/user/queryAllUsers,成功后返回如下結果:
[{"id":1,"name":"張三","password":"123456","sex":0,"des":"無備注"},
{"id":2,"name":"李四","password":"123456","sex":0,"des":"無備注"}]
2.測試新增用戶
本地打開瀏覽器,訪問http://localhost:8080/user/add?name=test1&password=123456,成功后返回如下結果:
{"id":13,"name":"test1","password":"123456","sex":null,"des":null}
四、注意事項
1.如果有很多Mapper接口如何一次性掃描
直接在程序啟動類添加@MapperScan注解即可。
例如:
@MapperScan(basePackages= {"com.example.springboot.mybatisannotation.dao.mapper"})
2.SpringBoot Mybatis增加駝峰命名規則
因為是注解版,沒有配置文件,所以SpringBoot增加駝峰命名需要增加一個自定義配置類(ConfigurationCustomizer)。
例如:
/**
* mybatis 注解版
*/
@Configuration
public class MybatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);//設置駝峰命名規則
}
};
}
}
到此SpringBoot整合Mybatis(XML配置方式)的功能已經全部實現,有問題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
推薦閱讀
1.SpringBoot系列-整合Mybatis(XML配置方式)
限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高並發分布式、大數據、機器學習等技術。
關注下方公眾號即可免費領取: