Mybatis——动态sql

Mybatis 官方文档

https://mybatis.org/mybatis-3/zh/configuration.html#environments

最好学习一门技术的方式,还是查阅官方文档,接下的博客也是总结文档内较常用的内容

一、Lombok

学习到这里了,就先介绍一门偷懒神器吧,在自己写一些demo案例中可以用到,但是在公司的代码中除非架构师要求,否则还是尽量不要使用这种会破坏代码规范的插件了

1.官方网站

https://projectlombok.org/

2.介绍

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

在个人使用中,对这句话的介绍就是免写getter、setter、equals、toString、constructor方法

3.安装方法

File=>settings=>plugins, 搜索Lombok
在这里插入图片描述
就可以看到他的这些特性,点击install安装插件
第二步,就是在maven中引入lombok的maven依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

这样就可以使用了,下面看一下一个简单的例子

4.简单案例
/**
 * @program: mybatis-demo
 * @description: user表model
 * @Data 增加setter、getter、constructor、toString、hasCode方法
 * @NoArgsConstructor 增加无参构造方法
 * @AllArgsConstructor 增加有参构造方法
 * @author: hs
 * @create: 2020-09-03 11:00
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   

    private Integer id;

    private String name;

    private String sex1;

}

很简单就要将相应的注解添加到对应的类上就可以了,也可以添加到属性上边,常用的注解有@Getter 、@Setter、@ToString、@EqualsAndHashCode、@AllArgsConstructor, @RequiredArgsConstructor、@NoArgsConstructor、@Data
相应的含义可以直接代码上的注释,也可以直接百度搜索一下,太多解释的了

二、resultMap链表查询

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
上面是最官方的介绍,简单点说就是对从数据库查询出来的结果和pojo之间做一个属性映射关系
这部分主要讨论的内容是resultMap的association 和collection 这两个标签,他们分别代表的是一对一和一对多的一个关系。

接下来是例子

一对一
Model 类

@Data
public class Role {
   

    private Integer id;

    private String name;

    private List<User> users;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   

    private Integer id;

    private String name;
    /**
     * 和数据库字段名有不同,可以使用mybatis xml配置中的resultMap方式进行映射
     */
    private String sex1;

    /**
     * 在角色权限控制中,用户和角色之间的关系应该是多对多的,但是目前为了充分展示
     * mybatis的一对多和多对一,这里就假定一个用户对应一个角色,一个角色可以和多个用户对应
     */
    private Role role;

}

dao层

/**
 * 一对一对应关系
 */
public interface UserMapper {
   

    /**
     * 子查询一对一对应关系
     * @return
     */
    List<User> selectAll();

    /**
     * 查询集合一对一对应关系
     * @return
     */
    List<User> selectAll1();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值