day01 尚医通项目简介+mybatisplus 入门

目录

内容介绍

尚医通项目介绍

业务流程

系统架构

MyBatisPlus简介

MyBatisPlus入门

MP配置日志输出

MP添加信息+主键策略

MP修改数据

MP实现自动填充

乐观锁

MP实现基本查询

MP实现删除数据

MP实现条件查询


内容介绍

1 尚医通项目介绍

2业务流程

3系统架构

4 MyBatisPlus学习

尚医通项目介绍

1、是什么、为什么

尚医通即为网上预约挂号系统,网上预约挂号是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,许多患者为看一次病要跑很多次医院,最终还不一定能保证看得上医生。网上预约挂号全面提供的预约挂号业务从根本上解决了这一就医难题。随时随地轻松挂号!不用排长队!

业务流程

系统架构

1、考虑因素

性能、可扩展性、高可用、安全性、成本

MyBatisPlus简介

1、是什么

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

官网:Redirect

2、为什么

见课件

MyBatisPlus入门

1、准备数据库表

2、创建工程

1)使用 Spring Initializr 快速初始化一个 Spring Boot 工程

2)修改版本,添加依赖

<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter</artifactId>

    </dependency>

  

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-test</artifactId>

        <scope>test</scope>

    </dependency>

  

    <!--mybatis-plus-->

    <dependency>

        <groupId>com.baomidou</groupId>

        <artifactId>mybatis-plus-boot-starter</artifactId>

        <version>3.3.1</version>

    </dependency>

  

    <!--mysql-->

    <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

    </dependency>

  

    <!--lombok用来简化实体类-->

    <dependency>

        <groupId>org.projectlombok</groupId>

        <artifactId>lombok</artifactId>

    </dependency>

  </dependencies>

3)添加配置信息

# 应用名称

  spring.application.name=mybatisplus

  spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

  spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8

  spring.datasource.username=root

  spring.datasource.password=123123

3、实现功能

1)给启动类添加注解

2)创建实体

创建包 entity 编写实体类 User.java

@Data

  public class User {

    private Long id;

    private String name;

    private Integer age;

    private String email;

  }

3)创建mapper

@Repository
public interface UserMapper extends BaseMapper<User> {

}

4)创建测试案例



  @Autowired

  private UserMapper userMapper;

  @Test

  public void findAll(){

    List<User> users = userMapper.selectList(null);

    users.forEach(System.out::println);

  }

MP配置日志输出


  #mybatis日志

  mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

MP添加信息+主键策略

1、添加信息

@Test

  public void addUser(){

    User user = new User();

    user.setName("zhang3");

    user.setAge(33);

    user.setEmail("[email protected]");

    int insert = userMapper.insert(user);

    System.out.println("insert = " + insert);

  }

2、主键策略

MP修改数据
@Test

  public void updateUser(){

   User user = new User();

    user.setId(1677521904694546433L);

    user.setName("zhang3upup");

    int update = userMapper.updateById(user);

    System.out.println("update = " + update);

  }

MP实现自动填充

1、修改表增加两个字段

User表中添加datetime类型的新的字段 create_timeupdate_time

2、修改实体增加属性

3、给实体的属性添加注解(什么时候填充)

@TableField(fill = FieldFill.INSERT)

  private Date createTime;

  @TableField(fill = FieldFill.INSERT_UPDATE)

  private Date updateTime;

4、添加控制器(填充什么)

@Component

  public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override

    public void insertFill(MetaObject metaObject) {

        this.setFieldValByName("createTime",new Date(),metaObject);

        this.setFieldValByName("updateTime",new Date(),metaObject);

    }

  

    @Override

    public void updateFill(MetaObject metaObject) {

        this.setFieldValByName("updateTime",new Date(),metaObject);

    }

  }

5、测试

*新增

乐观锁

1、乐观锁

2、实现乐观锁

1)添加表字段、修改实体

ALTER TABLE `user` ADD COLUMN `version` INT

private Integer version;

2)配置自动填充

3)给属性添加乐观锁注解

4)添加配置类,添加插件

@EnableTransactionManagement

@Configuration

@MapperScan("com.atguigu.mybatisplus.mapper")

  public class MybatisPlusConfig {

    /**

     * 乐观锁插件

     */

    @Bean

    public OptimisticLockerInterceptor optimisticLockerInterceptor() {

        return new OptimisticLockerInterceptor();

    }

  }

5)测试

@Test

  public void updateUser(){

   User user =userMapper.selectById(1677577776967778306L);

    user.setName("wang5");

    int update = userMapper.updateById(user);

    System.out.println("update = " + update);

  }

MP实现基本查询

1、根据id查询数据

User user =userMapper.selectById(1677577776967778306L);

2、根据id集合查询数据

@Test

  public void getUserByIds(){

    List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));

    users.forEach(System.out::println);

  }

3、根据多个条件查询

@Test

  public void getUserByInfo(){

    Map<String,Object> map = new HashMap<>();

    map.put("name", "zhang3upup");

    map.put("age", 33);

    List<User> users = userMapper.selectByMap(map);

    users.forEach(System.out::println);

  }

4、分页查询

(1)添加分页插件

/**

 * 分页插件

 */

  @Bean

  public PaginationInterceptor paginationInterceptor() {

    return new PaginationInterceptor();

  }

(2)分页查询

@Test

    public void getUserByPage(){

        Page<User> page = new Page<>(1,2);

        //方式一

//        Page<User> userPage = userMapper.selectPage(page, null);

        //方式二

        userMapper.selectPage(page, null);

        page.getRecords().forEach(System.out::println);

        System.out.println(page.getCurrent());

        System.out.println(page.getPages());

        System.out.println(page.getSize());

        System.out.println(page.getTotal());

        System.out.println(page.hasNext());

        System.out.println(page.hasPrevious());

    }

MP实现删除数据

1、根据id删除

@Test

  public void delUserById(){

    int delete = userMapper.deleteById(1677521904694546433L);

    System.out.println("delete = " + delete);

  }

2、根据ids批量删除

@Test

  public void delUserByIds(){

    int delete = userMapper.deleteBatchIds(Arrays.asList(

            1677565142663000065L,

            1677577776967778306L

    ));

    System.out.println("delete = " + delete);

  }

3、逻辑删除

  • 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
  • 逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录

(1)修改表字段、实体添加属性

ALTER TABLE `user` ADD COLUMN `deleted` boolean

private Integer deleted;

(2)实现自动填充

(3)添加注解标注逻辑删除

(4)添加配置(符合如下默认规则,可以不加配置)

mybatis-plus.global-config.db-config.logic-delete-value=1

  mybatis-plus.global-config.db-config.logic-not-delete-value=0

(5)测试

*删除

*查询

MP实现条件查询

1、wrapper

条件查询构造器

2、常用方法

//1 eqne

//2gegtlelt

//3between

//4like

//5orderByDesc

//6select

3、测试

@Test

  public void getUserByWrapper(){

    QueryWrapper<User> wrapper = new QueryWrapper<>();

    //1 eqne

    //wrapper.eq("name","zhang3");

    //2gegtlelt

    //wrapper.ge("age",33);

    //3between

    //wrapper.between("age",33,55);

    //4like

    //wrapper.like("name","J");

    //5orderByDesc

    wrapper.orderByDesc("age");

    //6select

    wrapper.select("name","age");

    List<User> users = userMapper.selectList(wrapper);

    users.forEach(System.out::println);

  }

猜你喜欢

转载自blog.csdn.net/leader_song/article/details/131631064
今日推荐