确认IDEA配置
截止目前,利用IDEA创建SpringBoot项目的版本最低为2.5.11。但是为了项目演示并且学习Mybatis与SpringBoot的整合,我们仅仅需要SpringBoot为2.2.1.RELEASE的版本。因此,需要在pom.xml文件中修改配置。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
创建项目
添加Mybatis-plus的依赖和其他相关依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
特别注意:添加了Mybatis-plus依赖后,就不要添加Mybatis依赖。
如果您的lombok不起作用,请及时安装在IDEA中安装lombok
插件。一般情况下,已经默认安装。(该插件帮助生成Setter和Getter方法)
配置数据库信息;编写application.properties文件 或者编写application.yaml文件
#mysql数据源配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/hospital # database替换为对应的数据库
username: root # root替换为对应的用户
password: 123456 # password替换为对应的密码
driver-class-name: com.mysql.cj.jdbc.Driver
相比application.properties文件,我更喜欢application.yaml文件。因为它更简洁明了。(可以了解一下配置文件的生效顺序,以及他们两者之间的区别)
编写代码
- 编写实体类
package com.example.demomp.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
- 编写Mapper
public interface UserMapper extends BaseMapper<User> {
// 使用继承BaseMapper<E> ,插入User实体类类型
}
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);
}
- 启动类
这里我们需要的在DemompApplication加入注解@MapperScan(“com.example.demomp.mapper”),以获取该包动态生成的对象。相比在每个接口类添加@Mapper注解,还不如在使用@MapperScan,直接获取该包下的所有的接口类的动态的生成的实现类。
package com.example.demomp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demomp.mapper")
//作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
public class DemompApplication {
public static void main(String[] args) {
SpringApplication.run(DemompApplication.class, args);
}
}