SpringBoot整合MybatisPlus

1.创建项目导入依赖



    com.baomidou
    mybatis-plus-boot-starter
    3.3.2



    mysql
    mysql-connector-java
    runtime

2.配置文件

application.properties配置文件中连接数据库

spring.datasource.url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

application.yml配置文件中连接数据库

spring:
 datasource:
 url: jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
 username: root
 password: root

3.创建UserMapper接口

3.1 创建UserMapper接口

在Mybatis02Application启动类所在包下创建子包mapper,并在子包中创建我们的UserMapper接口

3.2 添加@Mapper注解

在接口上添加@Mapper注解,将其交给Spring去管理

3.3 继承BaseMapper接口

让UserMapper继承我们MybatisPlus中的BaseMapper接口,并规范好泛型(这里的泛型一般对应我们的实体类的类型),这样我们一些简单的增删改查语句就不需要我们自己去实现了,直接可以调用我们BaseMapper中已经写好的方法

@Mapper
public interface UserMapper extends BaseMapper {
}

4.测试

在test包下创建一个测试类,并且在测试类上必须添加一个@SpringBootTest注解,在测试类中写一个测试方法,测试方法上添加一个@Test注解
注入我们UserMapper对象,并调用我们继承自MybatisPlus中BaseMapper的insert()

@SpringBootTest
public class UserMapperTests {
    @Autowired
    UserMapper userMapper;
    @Test
    void save(){
        User user = new User();
        user.setId(26);
        user.setUsername("张三");
        user.setPassword("123456");
        user.setAge(18);
        user.setPhone("13888880088");
        user.setEmail("[email protected]");
        userMapper.insert(user);
    }
}

5.BaseMapper

BaseMapper中提供了很多我们常用简单的增删改查语句,简化了我们的开发,源码如下:

public interface BaseMapper extends Mapper {
    int insert(T entity);
    int deleteById(Serializable id);
    int deleteByMap(@Param("cm") Map columnMap);
    int delete(@Param("ew") Wrapper wrapper);
    int deleteBatchIds(@Param("coll") Collection idList);
    int updateById(@Param("et") T entity);
    int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);
    T selectById(Serializable id);
    List selectBatchIds(@Param("coll") Collection idList);
    List selectByMap(@Param("cm") Map columnMap);
    T selectOne(@Param("ew") Wrapper queryWrapper);
    Integer selectCount(@Param("ew") Wrapper queryWrapper);
    List selectList(@Param("ew") Wrapper queryWrapper);
    List> selectMaps(@Param("ew") Wrapper queryWrapper);
    List selectObjs(@Param("ew") Wrapper queryWrapper);
    > E selectPage(E page, @Param("ew") Wrapper queryWrapper);
    >> E selectMapsPage(E page, @Param("ew") Wrapper queryWrapper);
} 
 

6.注意事项

6.1 实体类名与数据库表名不一致

6.1.1 通过配置类来解决

例如:如果我们实体类为User,而对应的我们数据库中的表为user,这时我们不需要做任何更改,MybatisPlus会通过映射关系帮助我们自动定位到我们的user表
而如果我们实体类为User,而对应的我们数据库中的表为t_user,需要我们在配置文件中配置表前缀,内容如下:
mybatis-plus.global-config.db-config.table-prefix=t_
当然这样可能不够灵活所以我们还可以通过注解的方式来达到同样的目的

6.1.2通过注解来解决

我们可以通过@TableName注解将我们的实体类与数据库中的表映射起来达到相同的目的.
例如:
@Data
@TableName("t_user")
public class User {
    private Integer id;
    private String username;
    private String password;
    private String email;
    private Integer age;
    private String phone;
}

6.2 属性名与表中字段名不一致

6.2.1 通过配置类来解决

例如:
SpringBoot整合MybatisPlus_第1张图片
当属性与表字段的对应关系如图所示时,我们可以通过配置类解决这样的问题我们称为驼峰映射
mybatis-plus.configuration.map-underscore-to-camel-case=true
当然开启驼峰映射解决的问题比较局限,所以我们也可以通过注解的形式来解决这一类问题

6.2.2通过注解来解决

我们可以通过@TableId/@TableField等注解将我们的实体类属性与数据库表字段映射起来达到相同的目的.
@Data
@TableName("t_user")
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField("username")
    private String username;
    @TableField("password")
    private String password;
    @TableField("email")
    private String email;
    @TableField("age")
    private Integer age;
    @TableField("phone")
    private String phone;
}

你可能感兴趣的:(SpringBoot整合MybatisPlus)