当前位置: 首页 > news >正文

企业在线购物网站建设app外包网

企业在线购物网站建设,app外包网,如何制作自己网站,两人合伙做网站但不准备开公司目录 mybatis-plus集合1、简介2、特性3、开始使用4、QueryWrapper的使用5、补充 mybatis-plus集合 1、简介 MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 m…

目录

  • mybatis-plus集合
      • 1、简介
      • 2、特性
      • 3、开始使用
      • 4、QueryWrapper的使用
      • 5、补充

mybatis-plus集合

1、简介

MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

mybatis-plus只是增强了mybatis的功能,只是增加了JDBC基础CURD的功能的baseMapper类,封装了一些基础的CURD的mapper接口和实现方法,减少了一些基础的代码编译

2、特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

3、开始使用

  • 创建springBoot

  • 写好实体类,引入lombok

    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @Component
    public class User implements Serializable{@TableId(type = IdType.AUTO)private Long id;private String username;@TableField(exist = false)private String password1;private String password;private Long phonenumber;private String email;
    }
    

    @TableId注解识别主键和主键类型

    @TableField注解识别字段和字段类型

    @TableField(exist = false)标识不是表中元素

    主键用Long类型,mybatis-plus主键用的是雪花算法(通过时间戳来生成唯一主键)

    int类型没用这么多位数,所以别用

    @TableId(type = IdType.AUTO)注释来解释主键自增,可以不用雪花算法

  • 写好mapper接口和mapper映射实现xml文件,引入mybatis-plus

    <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency>
    
  • application启动类增加@MapperScan("com.hai.boot.mapper")注释,也可以在mapper接口类中增加@Mapper注释,让springboot来管理mapper

  • 写mapper接口类

    package com.hai.boot.mapper;import org.apache.ibatis.annotations.Options;
    import org.apache.ibatis.annotations.Select;
    import org.springframework.stereotype.Repository;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.hai.boot.pojo.User;
    @Repository
    public interface UserMapper extends BaseMapper<User>{
    //	@Select("select * from user where username = #{username}")
    //	User getByUserName(String username);}
    

    继承 extends BaseMapper<T>,T为实体类,BaseMapper类里写好了一些基础的CURD接口,就不需要我们写mapper实体xml文件方法和mapper接口了

    public interface BaseMapper<T> extends Mapper<T> {/*** 插入一条记录** @param entity 实体对象*/int insert(T entity);/*** 根据 ID 删除** @param id 主键ID*/int deleteById(Serializable id);/*** 根据实体(ID)删除** @param entity 实体对象* @since 3.4.4*/int deleteById(T entity);/*** 根据 columnMap 条件,删除记录** @param columnMap 表字段 map 对象*/int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,删除记录** @param queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)*/int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 删除(根据ID或实体 批量删除)** @param idList 主键ID列表或实体列表(不能为 null 以及 empty)*/int deleteBatchIds(@Param(Constants.COLL) Collection<?> idList);/*** 根据 ID 修改** @param entity 实体对象*/int updateById(@Param(Constants.ENTITY) T entity);/*** 根据 whereEntity 条件,更新记录** @param entity        实体对象 (set 条件值,可以为 null)* @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)*/int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);/*** 根据 ID 查询** @param id 主键ID*/T selectById(Serializable id);/*** 查询(根据ID 批量查询)** @param idList 主键ID列表(不能为 null 以及 empty)*/List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList);/*** 查询(根据 columnMap 条件)** @param columnMap 表字段 map 对象*/List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,查询一条记录* <p>查询一条记录,例如 qw.last("limit 1") 限制取一条记录, 注意:多条数据会报异常</p>** @param queryWrapper 实体对象封装操作类(可以为 null)*/default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {List<T> list = this.selectList(queryWrapper);// 抄自 DefaultSqlSession#selectOneif (list.size() == 1) {return list.get(0);} else if (list.size() > 1) {throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());} else {return null;}}/*** 根据 Wrapper 条件,判断是否存在记录** @param queryWrapper 实体对象封装操作类* @return 是否存在记录*/default boolean exists(Wrapper<T> queryWrapper) {Long count = this.selectCount(queryWrapper);return null != count && count > 0;}/*** 根据 Wrapper 条件,查询总记录数** @param queryWrapper 实体对象封装操作类(可以为 null)*/Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 entity 条件,查询全部记录** @param queryWrapper 实体对象封装操作类(可以为 null)*/List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录** @param queryWrapper 实体对象封装操作类(可以为 null)*/List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录* <p>注意: 只返回第一个字段的值</p>** @param queryWrapper 实体对象封装操作类(可以为 null)*/List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 entity 条件,查询全部记录(并翻页)** @param page         分页查询条件(可以为 RowBounds.DEFAULT)* @param queryWrapper 实体对象封装操作类(可以为 null)*/<P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录(并翻页)** @param page         分页查询条件* @param queryWrapper 实体对象封装操作类*/<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    }
    
  • 写service服务层的接口类,IService<T>同上mapper层,这样就可以直接在controller层上用接口就行了

    public interface UserService extends IService<User>{
    //	User getByUserName(String username);
    }
    
  • 写service服务层的实体类

    @Service
    public class UserSerrviceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    //	@Autowired
    //	private UserMapper userMapper;
    //	@Override
    //	public User getByUserName(String username) {
    //		User user = userMapper.getByUserName(username);
    //		return user;}
    }
    

注意:

BaseMapper类和IService类不影响基本的mybatis功能,可以自定义mapper和以前一样

4、QueryWrapper的使用

mybatis-plus为了实现有条件性实现CURD功能,如:模糊查询功能。增加了Wrapper类来实现。

mybatis以前是通过example实体类的createCriteria()方法来添加条件,plus中就减少了example实体类的创建

实现模糊查询:直接在控制层写

QueryWrapper<Blog> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(seacrch),"tittle", seacrch);
List<Blog> list = blogService.list(queryWrapper);

5、补充

更多细节查看官网:https://baomidou.com

http://www.yayakq.cn/news/404390/

相关文章:

  • 做蛋糕网站中国建设银行官网官网
  • 自学网页设计的网站世界建设企业网站
  • 网站推广销售腾讯会员被告怎么办富阳seo关键词优化
  • 网站开发 科技网站被电脑管家拦截做301跳转
  • 从零做网站网站开发思维导图内容
  • 专业的食品行业网站开发做网站 有哪些问题
  • 重庆承越网站制作公司网上服务系统
  • 网站建设方案书doc模板秦皇岛疾控最新通告今天
  • 做网站建设怎么介绍自己工人找工作哪个网站好
  • 吉林网站建设平台爱牛网络
  • 高端做网站公司哪家好做项目搭建网站 构建数据库
  • 做一个网站建设的流程企业网站建设验收
  • 网站建设制作小程序开发logo设计免费生成器在线
  • 医药网站建设方案广州中小学安全教育平台
  • 帮别人做彩票网站吗wordpress主题jenney
  • 网站建设中 模版打开一个网站
  • 德阳住房和城乡建设厅网站关键词林俊杰无损下载
  • 厦门自主建站模板桂林旅游景点
  • 电源 东莞网站建设公司logo怎么注册
  • WordPress点击显示弹窗内容seo网站排名厂商定制
  • 泰州专业做网站谷歌外链工具
  • 山东省住房和城乡建设厅网站定额站阿里云服务器可以做彩票网站吗
  • 电子商务网站建设含义易企秀类似的软件
  • 打开网站弹出视频js层次化网络设计的优点是什么
  • xampp怎么做网站做管理信息的网站吗
  • 怎么建立网站快捷方式wordpress菜单添加首页
  • 企业网站备案好不好长沙百度网站排名优化
  • 网站编辑给续南明做的封面广东省招标网采购网
  • 台州手机网站建设注册了网站之后怎么设计
  • 服务周到的做网站做平台网站多少钱