SpringBoot系列-整合Mybatis(注解方式)

1,528 阅读3分钟

上一篇文章《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);
}
  1. 添加访问控制层

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":"无备注"}]
  1. 测试新增用户

本地打开浏览器,访问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"})
  1. 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配置方式)的功能已经全部实现,有问题欢迎留言沟通哦!

完整源码地址: github.com/suisui2019/…

推荐阅读

1.SpringBoot系列-整合Mybatis(XML配置方式)

1.Java中打印日志,这4点很重要!

3.SpringBoot集成JWT实现权限认证

4.一分钟带你了解JWT认证!

5.SpringBoot中如何优雅的读取yml配置文件?


限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。 关注下方公众号即可免费领取:

Java碎碎念公众号