SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)

时间:2023-03-08 15:21:47
SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)

SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)

================================

©Copyright 蕃薯耀 2018年4月8日

http://www.cnblogs.com/fanshuyao/

源代码下载见:http://fanshuyao.iteye.com/blog/2415933

一、引入Mybatis依赖包:

  1. <dependency>
  2. <groupId>org.mybatis.spring.boot</groupId>
  3. <artifactId>mybatis-spring-boot-starter</artifactId>
  4. <version>1.3.2</version>
  5. </dependency>

数据库连接依赖包:

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <scope>runtime</scope>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba</groupId>
  8. <artifactId>druid</artifactId>
  9. <version>1.1.9</version>
  10. </dependency>

二、建立对应的表和Java实体(过程略)

三、建立实体对应的Mapper(如UserMapper )

  1. import org.apache.ibatis.annotations.Insert;
  2. import org.apache.ibatis.annotations.Mapper;
  3. import org.apache.ibatis.annotations.Options;
  4. import org.apache.ibatis.annotations.Select;
  5. import com.lqy.springboot.bean.User;
  6. @Mapper
  7. public interface UserMapper {
  8. @Select("select * from user where user_id = #{userId}")
  9. public User getById(Integer userId);
  10. @Options(useGeneratedKeys=true,keyProperty="userId")
  11. @Insert("insert into user(user_name,age) values(#{userName},#{age})")
  12. public Integer save(User user);
  13. }

注意:使用注解版需要在类上加上@Mapper注解,让SpringBoot自动扫描能识别

  1. @Mapper

 问题:如果有很多Mapper接口,能不能一次性扫描呢?

有。

在程序启动入口加入注解:

  1. @MapperScan(basePackages= {"com.lqy.springboot.mapper"})

具体如下:

  1. import org.mybatis.spring.annotation.MapperScan;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. //Mybatis自动扫描包
  5. //@MapperScan(basePackages= {"com.lqy.springboot.mapper"})
  6. @SpringBootApplication
  7. public class SpringbootDatasourceApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SpringbootDatasourceApplication.class, args);
  10. }
  11. }

这样就能解决多Mapper需要添加注解的麻烦。

四、测试Mapper

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import com.lqy.springboot.bean.User;
  5. import com.lqy.springboot.mapper.UserMapper;
  6. @RestController
  7. public class UserController {
  8. @Autowired
  9. private UserMapper userMapper;
  10. @RequestMapping("/getUser")
  11. public User getUser(Integer userId) {
  12. if(userId == null) {
  13. userId = 1;
  14. }
  15. return userMapper.getById(userId);
  16. }
  17. @RequestMapping("/saveUser")
  18. public User saveUser(User user) {
  19. userMapper.save(user);
  20. return user;
  21. }
  22. }

五、SpringBoot Mybatis增加驼峰命名规则:

因为是注解版,没有配置文件,所以SpringBoot增加驼峰命名需要增加一个自定义配置类(ConfigurationCustomizer):

  1. import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. /**
  5. * mybatis 注解版
  6. *
  7. */
  8. @Configuration
  9. public class MybatisConfig {
  10. @Bean
  11. public ConfigurationCustomizer configurationCustomizer() {
  12. return new ConfigurationCustomizer() {
  13. @Override
  14. public void customize(org.apache.ibatis.session.Configuration configuration) {
  15. configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则
  16. }
  17. };
  18. }
  19. }

================================

©Copyright 蕃薯耀 2018年4月8日

http://www.cnblogs.com/fanshuyao/