springboot整合mybatis与mybatis-plus

本文总阅读量
本文最后更新于2 分钟前,文中所描述的信息可能已发生改变。

mybatis-plus是在mybatis的基础上只做增强而不做改变。所以我们可以同时使用两者,即有plus的方便性又有mybatis的灵活性。

导入依赖

xml
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<!--springboot2.x的导入方式-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>

在application.yml中进行配置

yml
# 只是把mybatis改为了mybatis-plus而已 
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  # 开启驼峰命名,简化手动指定表的列名与对象的属性名的映射
  configuration:
    map-underscore-to-camel-case: true

代码编写

实体类

java
//指定实体对应的数据库中的表名
@TableName(value = "student")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Student {
    private Long id;
    private String name;
    private String xId;
    private int age;
    private Date birthday;
}

Mapper接口

就和写mybatis时一样,只不过plus已经帮我们生成了一些基本的CRUD方法我们可以直接调用。BaseMapper上的泛型填对应的实体类。

java
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
    @Insert("insert into student(name, x_id, age, birthday) value(#{name},#{xId},#{age},#{birthday}) ")
    void add(Student student);
    @Insert("insert into student(id, name, x_id, age, birthday) value(#{id},#{name},#{xId},#{age},#{birthday}) ")
    void addWithId(Student student);

    void deleteById(Long id);
}

xml的编写。

我们既可以使用注解也可以使用xml的方式亦或者两者同时使用来定义sql,此处是同时使用。

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.helo.mapper.StudentMapper">
    <delete id="deleteById" parameterType="java.lang.Long">
        delete from student where id = #{id}
    </delete>
</mapper>

测试

java
@SpringBootTest(classes = MyApplication.class)
@Slf4j
public class Test {
    @Autowired
    private StudentMapper studentMapper;
    @Test
    public void MPTest(){
        Long current = 1L;
        Long size = 3L;
        Page<Student> page = new Page<>(current,size);
        LambdaQueryWrapper<Student> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Student::getId,3L)
                .or()
                .eq(Student::getId,2L);
        List<Student> students = studentMapper.selectList(wrapper);
        studentMapper.selectPage(page,wrapper);
        long total = page.getTotal();
        long pages = page.getPages();
        List<Student> records = page.getRecords();
        LambdaUpdateWrapper<Student> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Student::getId,2L).set(Student::getXId,9);
        studentMapper.update(null,updateWrapper);
    }

}

补充

mysql数据库中与java中的Date类型的转换:其实mybatis会自动帮我们把java中的Date类型转换为数据库中的Date类,我们只需要正常传入java.util.Date类型的参数就行。

官方文档

Mybatis-Plus

springboot+mybatis中resultMap与驼峰命名
springboot源码学习
Valaxy v0.18.5 驱动 | 主题 - Yun v0.18.5
本站总访问量
本站访客数 人次
本站已运行0 天0 小时0 分0 秒后缀