本文最后更新于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类型的参数就行。