美文网首页
Mybatis Plus 基础向导

Mybatis Plus 基础向导

作者: 孙宏志 | 来源:发表于2020-02-25 10:59 被阅读0次

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之类的时间

一般来说,数据库的时间填充有两种操作

  1. 数据库自动填充(主要使用default CURRENT_TIMESTAMP关键字)
  2. 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

此处需注意的是,

  1. 继承baseMapper.
  2. 传入的类为该mapper所对应的实体类.
  3. 使用@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);

相关文章

网友评论

      本文标题:Mybatis Plus 基础向导

      本文链接:https://www.haomeiwen.com/subject/mtuzqhtx.html