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