1.初始化工程
使用 Spring Initializr 快速初始化一个 Spring Boot 工程。
Group:com.simoniu Artifact:mpdemo 版本:2.2.1.RELEASE
2.添加依赖
1)添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!---junit dependency-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!---mysql driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok dependency--->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2)idea中安装lombok插件

3.application配置
application.properties
#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
#配置jpa
#帮我们自动生成表结构
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
#上下文配置
server.port=8080
server.servlet.context-path=/mpmdemo
application.yml
#数据源配置
spring:
#配置数据源
datasource:
url: jdbc:mysql://localhost:3306/myweb?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
#Springboot2.0 的hikari配置
hikari:
minimum-idle: 5
#空闲连接存活最大时间,默认600000(10分钟)
idle-timeout: 180000
#连接池最大连接数,默认是10
maximum-pool-size: 10
#此属性控制从池返回的连接的默认自动提交行为,默认值:true
auto-commit: true
#连接池名称
pool-name: MyHikariCP
#此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
max-lifetime: 1800000
#数据库连接超时时间,默认30秒,即30000
connection-timeout: 30000
connection-test-query: SELECT 1
jpa:
show-sql: true
properties:
hibernate:
#dialect: org.hibernate.dialect.MySQL5Dialect ,注意这个是不支持事务的方言。
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
format_sql: true
#配置懒加载策略
enable_lazy_load_no_trans: true
hbm2ddl:
auto: update
注意,pring boot 2.1 版本以上,url写法的变化:
1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为Spring Boot 2.1 集成了 8.0版本的jdbc驱动,这个版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例报告如下错误:
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
2、这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver 已经被废弃,否则运行测试用例的时候会有 WARN 信息
4.编写代码
1)在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹.
@SpringBootApplication
@MapperScan("com.simoniu.mpdemo.mapper")
public class MpdemoApplication {
public static void main(String[] args) {
SpringApplication.run(MpdemoApplication.class, args);
}
}
2)实体
创建包 entity 编写实体类 Users.java(此处使用了 Lombok 简化代码,使用了JPA自动生成表结构)
@Data
@Entity
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increment类型
private Long id;
private String name;
private Integer age;
private String email;
}
3)编写Mapper
创建包 mapper 编写Mapper 接口: UsersMapper.java
public interface UsersMapper extends BaseMapper<Users> {
}
5.测试
插入以下测试数据:
INSERT INTO users (id, name, age, email) VALUES
(1, '张三', 18, 'test1@baomidou.com'),
(2, '李四', 20, 'test2@baomidou.com'),
(3, '王五', 28, 'test3@baomidou.com'),
(4, '赵六', 21, 'test4@baomidou.com'),
(5, '孙琦', 24, 'test5@baomidou.com');
创建UsersMapperTest.java测试类。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UsersMapperTest {
@Autowired
private UsersMapper usersMapper;
@Test
public void testSelectList() {
System.out.println(("----- selectAll method test ------"));
//UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
//所以不填写就是无任何条件
List<Users> users = usersMapper.selectList(null);
users.forEach(System.out::println);
}
}
运行结果:
----- selectAll method test ------
Users(id=1, name=张三, age=18, email=test1@baomidou.com)
Users(id=2, name=李四, age=20, email=test2@baomidou.com)
Users(id=3, name=王五, age=28, email=test3@baomidou.com)
Users(id=4, name=赵六, age=21, email=test4@baomidou.com)
Users(id=5, name=孙琦, age=24, email=test5@baomidou.com)