0
点赞
收藏
分享

微信扫一扫

Mybatis-Plus自动填充

1.添加maven依赖

<dependencies>
        <!--  mysql   start-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.启动类

@SpringBootApplication
public class Demo01Application {
    public static void main(String[] args) {
        SpringApplication.run(Demo01Application.class, args);
    }
}

3.application.yml

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///db1?characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password: 1234

server:
  port: 9999
# mybatis-plus
mybatis-plus:
  mapper-locations: classpath*:mapper/*Mapper.xml
  type-aliases-package: com.*.*.pojo
  # 如果不在基础类中添加id 可以在配置文件中直接配置 在相应的实体类中 需要id属性
# global-config:
#   sql-parser-cache: true
#   db-config:
#     id-type: id_worker_str

4.创建基础类

/*
    Model是MybatisPlus提供的
    type = IdType.ID_WORKER_STR 加在id上 选择自动填充的类型
    @TableField( fill = FieldFill.INSERT)自动填充 设置填充的方式
    @TableField( fill = FieldFill.UPDATE)自动修改
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 时间格式
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseEntity<T extends Model<T>> extends Model<T> {
    
    @TableId(type = IdType.ID_WORKER_STR)
    private String id;

    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField( fill = FieldFill.INSERT)
    private LocalDateTime createTime;


    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField( fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;
}

5.创建自动填充类 设置填充的值

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        setFieldValByName("createTime",LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }
}

6.创建实体类 User

/*
    id继承自BaseEntity
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("user")
public class User extends BaseEntity {
   //  private String id;  //在使用yml配置时 需要添加id
    private String name;
    private Integer age;
    private String email;
}

7.创建UserMapper

/*
    BaseMapper是由mybatis-plus提供
    里面包含基本的增删改查方法
    
    * 如果使用自己写的xml方法 需要在xml 写全自动填充的字段
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
    void  insertUser(User user);
    void  updateUser(User user);
}

8.UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatisplus.demo.mapper.UserMapper">
    <insert id="insertUser" parameterType="user" >
        insert into user (id,name,age,email,Create_Time,Update_Time) values (#{id},#{name},#{age},#{email},#{createTime},#{updateTime})
    </insert>
    <update id="updateUser" parameterType="user">
        update user set name=#{name},age=#{age},email=#{email} where id=#{id}
    </update>
</mapper>

9.创建UserService

/*
    IService是由mybatis-plus提供
*/
public interface UserService extends IService<User> {
        void  insertUser(User user);
        void  updateUser(User user);
}

10.创建实现类UserServiceImpl


/*
    ServiceImpl是由mybatis-plus提供 泛型为对应的UserMapper和User
    如果不继承ServiceImpl 实现UserService 需要实现里面的所有方法
*/

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public void insertUser(User user) {
        userMapper.insertUser(user);
    }

    @Override
    public void updateUser(User user) {
       userMapper.updateUser(user);
    }

}

11.mysql效率插件

/*
    mysql效率插件会在控制台打印sql语句信息
*/
@Configuration
public class MybatisPlusConfig {
    /*
        mybatis-plus分页插件
    */
     @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
    /*
        mysql效率插件
    */
    @Bean
    public PerformanceInterceptor performanceInterceptor() {
        return new PerformanceInterceptor();
    }
}

12.分页查询

@Test
public void selectPage() {
     QueryWrapper<User> wrapper = new QueryWrapper<>();
     wrapper.ge("age",26);
     Page<User> page = new Page<>(1, 2);
     IPage<User> userIPage = userMapper.selectPage(page, wrapper);
     System.out.println("总条数"+userIPage.getTotal());
     System.out.println("总页数"+userIPage.getPages());
}


举报

相关推荐

0 条评论