1.添加maven依赖
<dependencies>
<!-- mysql start-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.启动类
@SpringBootApplication
public class Demo01Application {
public static void main(String[] args) {
SpringApplication.run(Demo01Application.class, args);
}
}
3.application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///db1?characterEncoding=utf-8&allowMultiQueries=true
username: root
password: 1234
server:
port: 9999
# mybatis-plus
mybatis-plus:
mapper-locations: classpath*:mapper/*Mapper.xml
type-aliases-package: com.*.*.pojo
# 如果不在基础类中添加id 可以在配置文件中直接配置 在相应的实体类中 需要id属性
# global-config:
# sql-parser-cache: true
# db-config:
# id-type: id_worker_str
4.创建基础类
/*
Model是MybatisPlus提供的
type = IdType.ID_WORKER_STR 加在id上 选择自动填充的类型
@TableField( fill = FieldFill.INSERT)自动填充 设置填充的方式
@TableField( fill = FieldFill.UPDATE)自动修改
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 时间格式
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseEntity<T extends Model<T>> extends Model<T> {
@TableId(type = IdType.ID_WORKER_STR)
private String id;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField( fill = FieldFill.INSERT)
private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField( fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
}
5.创建自动填充类 设置填充的值
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
setFieldValByName("createTime",LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
6.创建实体类 User
/*
id继承自BaseEntity
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("user")
public class User extends BaseEntity {
// private String id; //在使用yml配置时 需要添加id
private String name;
private Integer age;
private String email;
}
7.创建UserMapper
/*
BaseMapper是由mybatis-plus提供
里面包含基本的增删改查方法
* 如果使用自己写的xml方法 需要在xml 写全自动填充的字段
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
void insertUser(User user);
void updateUser(User user);
}
8.UserMapper.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.mybatisplus.demo.mapper.UserMapper">
<insert id="insertUser" parameterType="user" >
insert into user (id,name,age,email,Create_Time,Update_Time) values (#{id},#{name},#{age},#{email},#{createTime},#{updateTime})
</insert>
<update id="updateUser" parameterType="user">
update user set name=#{name},age=#{age},email=#{email} where id=#{id}
</update>
</mapper>
9.创建UserService
/*
IService是由mybatis-plus提供
*/
public interface UserService extends IService<User> {
void insertUser(User user);
void updateUser(User user);
}
10.创建实现类UserServiceImpl
/*
ServiceImpl是由mybatis-plus提供 泛型为对应的UserMapper和User
如果不继承ServiceImpl 实现UserService 需要实现里面的所有方法
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public void insertUser(User user) {
userMapper.insertUser(user);
}
@Override
public void updateUser(User user) {
userMapper.updateUser(user);
}
}
11.mysql效率插件
/*
mysql效率插件会在控制台打印sql语句信息
*/
@Configuration
public class MybatisPlusConfig {
/*
mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/*
mysql效率插件
*/
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
}
12.分页查询
@Test
public void selectPage() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.ge("age",26);
Page<User> page = new Page<>(1, 2);
IPage<User> userIPage = userMapper.selectPage(page, wrapper);
System.out.println("总条数"+userIPage.getTotal());
System.out.println("总页数"+userIPage.getPages());
}