简化开发,通用Mapper的使用【一】

1、你还在写sql?
让通用Mapper帮你解脱苦海,本人亲试,真的好用!
2、首先引入maven依赖,对应版本的mybatis依赖和pagehelper,我都贴出来了

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.2.1</version>
        </dependency>
        
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.1.4</version>
        </dependency>

3、引入成功,试试怎么样,首先创建一张表就叫User吧,表结构如下:

  `user_id` varchar(50) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(32) NOT NULL,
  `phone` varchar(18) NOT NULL,
  `email` varchar(30) DEFAULT NULL,
  `head` varchar(255) DEFAULT NULL,
  `is_delete` int(11) NOT NULL,
  `create_user` varchar(50) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_user` varchar(50) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL

4、控制器,实体什么的自己创建就行了,这里就不贴出来了,Mapper这块是重点,记下来,首先创建一个Mapper文件继承通用Mybatis的Mapper,将你的实体泛型传进去,当你写完这一步你的这个表的大部分简单的功能已经写完了

@Repository
public interface UserMapper extends Mapper<User> {
    
    
}

一定要注意一点,你的实体里面的Id必须有@Id注解,否则新增或者查询的时候它不知道你的那个字段是ID
在这里插入图片描述
@GeneratedValue(generator = “UUID”)

这个注解的作用是你新增的时候,自动帮你生成一个UUID,但是当批量新增的时候这个注解是不生效的

5、这时引入你的Mapper,你可以看到里面已经写好了很多方法
在这里插入图片描述
6、这时候基本的增删改查就差不多可以使用了,先从查说起,这里面查询有很多方法,可以根据实际情况来使用,我举几个例子:
比如你要查询一个名字叫:张三,手机号是:13500000000
在这里插入图片描述
可以看到有这么多方法,我简单说下:
selectAll():查询所有 相当于select * from user
selectByPrimaryKey():按照Id查询
selectOne():查询结果只有一个的方法,如果查询结果有多个会抛异常
select():查询结果为List的方法
selectCount():按照条件查出条数,相当于 select count(*) from user where ***

剩下这些下次再说,因为涉及到子查询,模糊查询,排序,组合查询等
在这里插入图片描述
开始测试:

        User user = new User();
        user.setUsername("张三");
        user.setPhone("13500000000");
        List<User> userList = userMapper.select(user);

运行代码,我们打印下sql:

SELECT user_id,username,password,phone,email,head,is_delete,create_user,create_time,update_user,update_time FROM user WHERE username = '张三' AND phone = '13500000000';

可以看到mabytis把我们传入的值,都变成了where条件,我们来看下源码
在这里插入图片描述
在这里插入图片描述

可以看到,它将我们传入的实体,通过反射拿到了属性,在将不为空的属性,设置为where的条件
7、接下来说说新增,新增比较简单只有两个方法,inser()就不说了,传入什么存什么,说说insertSelective()这个方法
在这里插入图片描述
这个方法和insert()不同之处是,insertSelective()只会插入不为null的字段,而insert会全部插入
8、删除分为两个方法:
delete(user):按照传入的条件删除
deleteByPrimaryKey(id):按照Id删除
9、修改也有两个方法:
updateByPrimaryKey():按照Id修改所有的值
updateByPrimaryKeySelective():只修改不等于null的条件,比如你只想修改name,你就可以写:

        User user = new User();
        user.setUserId("111");
        user.setUsername("李四");
        userMapper.updateByPrimaryKeySelective(user);

相当于sql:

UPDATE user SET username = '李四' WHERE user_id = '111';

基本的功能大概就这些,下一期讲组合sql如何写

猜你喜欢

转载自blog.csdn.net/qq_39486119/article/details/112829101
今日推荐