1. 增加pom文件
note:mybatis plus 与 mybatis 都会引进mybatis。
如果使用mybatis plus,就无需再引入mybatis,否则会报错
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
2. 在bean,entity 或者 pojo之类的文件类上添加注解
1). 添加表名
使用@TableName("table_name") 注解,在实体类上标记,标记其对应的数据库表名是哪个
@TableName("table_name")
2). 在实体类里面标注表的主键
如果数据库表是主键是自增的,则使用
@TableId(type=IdType.AUTO)
3). 在实体类里面标注列名
有可能在实体类的列名和解析后查库的列名不一致,这个时候需要在实体类里面进行标注
@TableField("数据库里的列名")
4). 自动填充数据库里面的createTime 和 updateTime之类的时间
一般来说,数据库的时间填充有两种操作
- 数据库自动填充(主要使用default CURRENT_TIMESTAMP关键字)
- mybatis plus的自动填充
此处主要用mybatis plus的自动填充,可参考如下代码:
@TableField(fill = FieldFill.INSERT) //插入
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) //插入和更新
private Date updateTime;
以上代码要生效,有一个前提是,必须要新建一个handler类,实现MetaObjectHandler 接口
package top.willnew.tools.user.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
//自动填充增强类
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// 插入填充
@Override
public void insertFill(MetaObject metaObject) {
log.info("insertFill 执行。。。。");
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
// 更新填充
@Override
public void updateFill(MetaObject metaObject) {
log.info("updateFill 执行。。。。");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
3. 实现mapper
此处需注意的是,
- 继承baseMapper.
- 传入的类为该mapper所对应的实体类.
- 使用@Repository 注解
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import top.willnew.tools.user.pojo.User;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
4. 在启动类上新增MapperScan注解
@SpringBootApplication
@MapperScan("top.willnew.tools.user.mapper") //mapper 的包名
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
5. CRUD操作
Create 增加记录
User user = new User();
user.setIdNo("123456");
user.setName("hellokity3335");
userMapper.insert(user);
Retrieve 读取查询
//单个查询
User user = userMapper.selectById(12L);
System.out.println(user);
//列表查询
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
// 批量查询
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3, 4, 5));
users.forEach(System.out::println);
// HashMap查询
HashMap<String,Object> map = new HashMap<>();
map.put("idNo","123456");
map.put("id",9);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
//多条件查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name","coding").ge("id","3").le("id","9").orderByDesc("id");
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
Update 更新操作
User user = new User();
user.setId(11L);
user.setName("coding2");
userMapper.updateById(user);
Delete 删除记录
userMapper.deleteById(10L); //删除操作
//删除后查询所有记录
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
网友评论