哈尔滨城乡建设局网站首页,白云区建网站公司,襄阳做网站公司有哪些,搜索引擎优化到底是优化什么一、特性
Mybatis应该大家现在都知道#xff0c;而且在项目中都在使用#xff0c;因为这块ORM框架让大家能专心业务SQL的编写#xff0c;数据库的连接#xff0c;连接池的使用都不用关心#xff0c;极大的提高了生产效率。
今天要给大家介绍的另外一款ORM框架#xff0…一、特性
Mybatis应该大家现在都知道而且在项目中都在使用因为这块ORM框架让大家能专心业务SQL的编写数据库的连接连接池的使用都不用关心极大的提高了生产效率。
今天要给大家介绍的另外一款ORM框架是Mybatis Plus这块工具正如其官网说的
1润物无声
只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑。
2效率至上
只需简单配置即可快速进行单表CRUD操作从而节省大量时间。
3丰富功能
代码生成、自动分页、逻辑删除、自动填充功能。
二、实战
1相关依赖
还等什么赶紧在项目中使用吧。
如果你的项目中已经能够通过正常访问Mysql数据库那就非常简单只需要下面依赖即可。
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.3.3/version
/dependency
如果你是刚开始学习那么数据库访问这块就必须加上这些依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId
/dependency
2常用注解
接下来就需要在数据库建个表如果你有表了那更方便直接开始建实体类现在以Order订单表为例
TableName(order)
public class Order implements Serializable {TableId(type IdType.AUTO)private Integer orderNo;private String prodName;private Float prodPrice;private Integer prodNum;public Integer getOrderNo() {return orderNo;}public void setOrderNo(Integer orderNo) {this.orderNo orderNo;}public String getProdName() {return prodName;}public void setProdName(String prodName) {this.prodName prodName;}public Float getProdPrice() {return prodPrice;}public void setProdPrice(Float prodPrice) {this.prodPrice prodPrice;}public Integer getProdNum() {return prodNum;}public void setProdNum(Integer prodNum) {this.prodNum prodNum;}Overridepublic String toString() {return Order{ orderNo orderNo , prodName prodName \ , prodPrice prodPrice , prodNum prodNum };}
}
这里需要重点讲下这个实体类用到了Mybatis Plus提供的两个注解
TableName
这个注解里面需要填的是表的名称因为order和MySQL的关键字冲突了因为需要额外再加一个单引号否则后面执行程序会报错如果你是正常的业务表名不需要额外加单引号。
TableId
这里针对主键字段需要加这个表示其注解类型可以根据数据库的实际情况选择例如自增长就和我选一样。
3接口定义
到这里如果是Mybatis就需要写xxMapper.xml文件和一个xxDao的mapper接口类今天我们使用的是Mybatis Plus只需要写一个mapper接口类一步搞定。
Repository
public interface OrderMapper extends BaseMapperOrder {
}
这里就是官网提到的效率至上只需简单配置即可快速进行单表CRUD操作从而节省大量时间。
下面我们就使用一下看怎么访问数据库的。比如从订单表里捞取商品名称是apple的订单
LambdaQueryWrapperOrder queryWrapper new LambdaQueryWrapper();
queryWrapper.eq(Order::getProdName, apple);
ListOrder orderList orderMapper.selectList(queryWrapper);
orderList.forEach(o - System.out.println(o));
是不是非常简单如果大家想知道基类也就是BaseMapper里面提供了哪些操作大家可以自己进入源码看看总是单个插入、单个查询、批量查询、删除、更新、分页查询都有了。
3.1LambdaQueryWrapper 和 QueryWrapper的区别
上面的代码中展示了LambdaQueryWrapper的使用方式下面再用QueryWrapper实现同样的功能
QueryWrapperOrder queryWrapper new QueryWrapper();
queryWrapper.eq(prod_name, apple);
ListOrder orderList orderMapper.selectList(queryWrapper);
orderList.forEach(o - System.out.println(o));
LambdaQueryWrapper可以使用表对应的实体类直接调用get方法获取列名而QueryWrapper只能填列名字符串这样如果表有修改很难知道哪些地方用到了此列名会造成遗漏。
3.2分页查询
分页查询要注意的是不能直接用BaseMapper里面的selectPage方法需要在配置类中引入Page拦截器这里推荐官方的拦截器。
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class MyBatisPlusConfiguration {/*** 新增分页拦截器并设置数据库类型为mysql*/Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}
写一个测试类跑一跑
RestController
RequestMapping(/order)
public class OrderController {Autowiredprivate OrderMapper orderMapper;RequestMapping(/page)public PageOrder queryPage(RequestParam(num) Integer pageNum,RequestParam(size) Integer pageSize){PageOrder page new Page(pageNum, pageSize);LambdaQueryWrapperOrder queryWrapper new LambdaQueryWrapper();Page page1 orderMapper.selectPage(page, queryWrapper);return page1;}
}
{records: [{orderNo: 1,prodName: apple,prodPrice: 3.6,prodNum: 3}, {orderNo: 2,prodName: apple,prodPrice: 3.8,prodNum: 4}, {orderNo: 3,prodName: pear,prodPrice: 7.5,prodNum: 2}, {orderNo: 4,prodName: pear,prodPrice: 7.2,prodNum: 3}],total: 6,size: 4,current: 1,orders: [],optimizeCountSql: true,searchCount: true,countId: null,maxLimit: null,pages: 2
}
三、总结
今天这篇文章的重点是介绍mybatis-plus这块效率工具希望大家都能尽快的在项目中使用有什么问题大家相互交流这样才能提高。