关于java:SpringBoot整合MybatisPlus

1.创立我的项目导入依赖

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>
<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

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<User> {
}

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("zhangsan@163.com");
        userMapper.insert(user);
    }
}

5.BaseMapper

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

public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);
    int deleteById(Serializable id);
    int deleteByMap(@Param("cm") Map<String, Object> columnMap);
    int delete(@Param("ew") Wrapper<T> wrapper);
    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    int updateById(@Param("et") T entity);
    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
    T selectById(Serializable id);
    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
    T selectOne(@Param("ew") Wrapper<T> queryWrapper);
    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);
    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> 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 通过配置类来解决

例如:

当属性与表字段的对应关系如图所示时,咱们能够通过配置类解决这样的问题咱们称为驼峰映射

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;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理