Mybatis-Plus简单入门
一,创建项目
开发java使用Mybatis-plus基本上都是项目中使用的,现在一般都用的是springboot,所以先创建一个springboot项目作为基础运行环境。
二,导入maven依赖
如果对项目熟悉导入依赖过程可以跳过;
先导入mybatis-plus-boot-starter依赖
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
项目运行还需要mysql导入mysql驱动,数据库连接池等这里使用的是hikari数据库连接池所以导入spring-boot-starter-jdbc依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
然后导入springbootweb,lombok等maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
三,配置application.properties
#模块名称
spring.application.name=plus
#访问路径
server.servlet.context-path=/plus
#时间格式化--如果不加此项时间可能查询显示不正常
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#访问端口
server.port=8848
#------------ mysql配置 -----------
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&useSSL=false&serverTimezone=Hongkon
spring.datasource.username=root
spring.datasource.password=root
#------------hikari 数据库连接池配置-----------
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.connectionTimeout=10000
spring.datasource.hikari.idleTimeout=50000
spring.datasource.hikari.minimumIdle=10
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.connectionTestQuery=select 1
#可能后续需要手动写sql的情况
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.mybatisplusdemo.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.default-fetch-size=10
mybatis-plus.configuration.default-statement-timeout=30
#开启sql打印
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#全局逻辑删除字段--需要在对应实体类逻辑删除字段上添加@TableLogic注解才能生效
mybatis-plus.global-config.db-config.logic-delete-field=is_delete
#全局逻辑已删除值
mybatis-plus.global-config.db-config.logic-delete-value=1
#全局逻辑未删除值
mybatis-plus.global-config.db-config.logic-not-delete-value=0
四,编写Mapper层接口
//编写Mapper层接口继承BaseMapper<T>
//T对应数据库表对应实体类并且实体类需要继承Modl<T>
//如果表名称与实体类不同需要使用注解@TableName标注
@Data
@TableName("t_address_book")
public class AddressBook extends Model<AddressBook> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
}
public interface AddressBookDao extends BaseMapper<AddressBook> {
}
五,使用mybatis-plus,Mapper CRUD接口
1,insert
//插入
int insert(T entity);
//在impl中的使用addressBookDao通过@Autowired注入
int insert = addressBookDao.insert(addressBook);
2,update
// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity,@Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
//在impl中的使用
//根据 whereWrapper 条件,更新记录
QueryWrapper<AddressBook> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",1);
int update = addressBookDao.update(addressBook,queryWrapper
//根据 ID 修改
int updateById = addressBookDao.updateById(addressBook);
3,delete
// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
//在impl中的使用
//根据 entity 条件,删除记录
QueryWrapper<AddressBook> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",1);
int delete = addressBookDao.delete(queryWrapper);
//删除(根据ID 批量删除)
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
int deleteBatchIds = addressBookDao.deleteBatchIds(ids);
//根据 columnMap 条件,删除记录 map中 key对应数据库字段入入note_tye,value对应值
Map<String,Object> map = new HashMap<>();
map.put("note_tye","新");
int deleteByMap = addressBookDao.deleteByMap(map);
4,select
// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
//对应impl 1对应pageNum,10对应pageSize
Page<AddressBook> page=new Page<>(1,10);
QueryWrapper<AddressBook> queryWrappers = new QueryWrapper<>();
queryWrapper.like("name","绵");
IPage<AddressBook> addressBookIPage = addressBookDao.selectPage(page,queryWrappers);