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


    上一篇文章《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配置方式)

    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碎碎念公众号

  • 相关阅读:
    第19 章 : 调度器的调度流程和算法介绍
    第18 章 : Kubernetes 调度和资源管理
    关于一次配合开发工作而产生的服务器内核参数问题(Android 网络问题)
    第17 章 : 深入理解 etcd:etcd 性能优化实践
    第16 章 : 深入理解 etcd:基于原理解析
    第15 章 : 深入解析 Linux 容器
    第14 章 : Kubernetes Service讲解
    第13 章 : Kubernetes 网络概念及策略控制
    第12 章 : 可观测性-监控与日志
    第11 章 : 可观测性:你的应用健康吗?(liveness和readiness)
  • 原文地址:https://www.cnblogs.com/haha12/p/11847433.html
Copyright © 2020-2023  润新知