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如何写