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

网站弄论坛形式怎么做智慧软文网站

网站弄论坛形式怎么做,智慧软文网站,网络营销策划心得体会,做 直销网站 公司一、介绍 在MybatisPlus框架中,IService接口扮演着重要的角色。作为一个通用的服务接口,IService定义了一系列方法,包括查询、插入、更新、删除等。这些方法的定义使得在服务层进行数据库操作变得更为便捷和高效。 IService 接口是一个泛型接…

一、介绍

        在MybatisPlus框架中,IService接口扮演着重要的角色。作为一个通用的服务接口,IService定义了一系列方法,包括查询、插入、更新、删除等。这些方法的定义使得在服务层进行数据库操作变得更为便捷和高效。

  • IService 接口是一个泛型接口,定义了一组通用的基础方法,包括常见的增删改查操作。例如,它提供了插入数据、根据主键更新数据、根据主键删除数据、根据主键查询数据等方法的签名。用户可以根据自己的需求和业务逻辑在自定义的服务接口中继承 IService 接口,并实现其中的方法。用法:
 public interface UserService extends IService<User> {}
  • ServiceImpl 类是 IService 接口的默认实现类,提供了基本的增删改查操作的实现细节。它使用了泛型参数来规范实体类和主键类型,并实现了 IService 接口中定义的方法。用户可以继承 ServiceImpl 类,并在自己的实现类中添加或重写更具体的业务逻辑。用法:        

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}

二、IService用法

1、添加数据

// 插入一条记录(选择字段,策略插入)
boolean save(T entity);// 插入(批量)
boolean saveBatch(Collection<T> entityList);// 插入(批量,限制数量)
boolean saveBatch(Collection<T> entityList, int batchSize);// TableId 注解存在更新记录,否则插入一条记录
boolean saveOrUpdate(T entity);// 根据 updateWrapper 尝试更新,否则继续执行 saveOrUpdate(T) 方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

        可以开启 rewriteBatchedStatements=true 参数,提高批处理的执行效率。

2、删除数据

// 根据 entity 条件,删除记录
boolean remove(Wrapper<T> queryWrapper);// 根据 ID 删除
boolean removeById(Serializable id);// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);

3、修改数据

// 根据 UpdateWrapper 条件更新记录,需要设置sqlset
boolean update(Wrapper<T> updateWrapper);// 根据 whereWrapper 条件,更新记录
boolean update(T updateEntity, Wrapper<T> whereWrapper);// 根据 ID 选择修改
boolean updateById(T entity);// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

4、查询数据

查询一条数据

// 根据 ID 查询
T getById(Serializable id);// 根据 Wrapper,查询一条记录。结果集如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);// 根据 Wrapper,查询一条记录,这个是方法返回结果不止一条则会抛出异常,如果想默认取第一条结果,可以给这方法传第二个参数为false。
T getOne(Wrapper<T> queryWrapper, boolean throwEx);// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);// 根据 Wrapper,查询一条记录
// mapper:转换函数,用于将查询结果中的每个对象转换为指定的对象类型。
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

查询多条数据

// 查询所有
List<T> list();// 查询列表
List<T> list(Wrapper<T> queryWrapper);// 查询(根据 ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);// 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);// 查询所有列表
List<Map<String, Object>> listMaps();// 查询列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);// 查询全部记录
List<Object> listObjs();// 查询全部记录
<V> List<V> listObjs(Function<? super Object, V> mapper);// 根据 Wrapper 条件,查询全部记录
List<Object> listObjs(Wrapper<T> queryWrapper);// 根据 Wrapper 条件,查询全部记录
// mapper:转换函数,用于将查询结果中的每个对象转换为指定的对象类型。
<V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

查询记录数 count()

// 查询总记录数
int count();// 根据 Wrapper 条件,查询总记录数
int count(Wrapper<T> queryWrapper);

分页:Page

// 无条件分页查询
IPage<T> page(IPage<T> page);// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page);// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);

        IPage 是MyBatis-Plus 提供的一个分页相关的接口,它有一个实现类为 Page,类中定义了分页相关的多个参数。

  • size (每页显示条数):此参数通常由前端传给我们,然后再封装到Page对象中进行分页查询;
  • current (要展示哪一页数据):此参数通常由前端传给我们,然后再封装到Page对象中进行分页查询;
  • orders(排序规则集合):按照哪些字段进行排序?可以为多个,例如希望通过时间进行排序,如果时间相同就根据用户ID降序排序,可以添加多个字段;
  • total (总记录数):指查询完毕后返回的数据库中总记录数,注意不包含已被逻辑删除的数据;
  • records(查询到的分页结果集数据):分页查询得到的多条数据会存储在 records 中,可以看出该对象是一个集合,可以传递一个泛型,泛型就是查询到的数据对应的实体泛型;
public class Page<T> implements IPage<T> {private static final long serialVersionUID = 8545996863226528798L;protected List<T> records;protected long total;protected long size;protected long current;protected List<OrderItem> orders;protected boolean optimizeCountSql;protected boolean searchCount;protected boolean optimizeJoinOfCountSql;protected String countId;protected Long maxLimit;
/* 以下省略 */
}

        Page对象使用演示:

@SpringBootTest
public class ProductMapperTest {// 自动注入 productMapper 接口对应的实现类对象@Autowiredprivate ProductMapper productMapper;@Testpublic void testPageQuery(){// 创建分页查询相关参数 page,泛型为 Product,表示查询到的结果对应的实体类为ProductPage<Product> page = new Page<>();// 设置分页查询显示第二页的数据,实际开发过程中该参数有前端传递page.setCurrent(2);// 设置分页查询每页显示四条数据,实际开发过程中该参数有前端传递page.setSize(4);// 创建排序字段集合,不想排序不加即可,实际开发过程中一般都会要求按照时间降序排序List<OrderItem> orders = new ArrayList<>();// 按照价格排序,排序方式为降序,ASC为True表示升序,false表示降序,第一个参数表示数据库中的列名orders.add(new OrderItem("price",false));// 按照生产时间排序,排序方式为降序orders.add(new OrderItem("production_date",false));// 将排序对象集合加入分页查询对象Page中page.setOrders(orders);// 执行分页查询,可以创建一个Page对象接受查询结果,// 也可以用查询条件参数page,但其实最后结果都是同一个page = productMapper.selectPage(page, null);// 可以新创建一个Page对象,就像下面这样Page<Product> productPage = productMapper.selectPage(page,null);// 输出分页查询结果显示当前的哪一页System.out.println(page.getCurrent());// 输出分页查询结果的总数据条数System.out.println(page.getTotal());// 输出分页查询结果的数据集合System.out.println(page.getRecords());// 输出分页查询结果的每页显示条数System.out.println(page.getSize());// 判断刚才分页查询的两个结果对象是否为同一个System.out.println(page == productPage);// 输出第一个分页查询对象内存地址System.out.println(page);// 输出第二个分页查询对象内存地址System.out.println(productPage);}
}

链式

        链式查询演示:

// 链式查询 普通
QueryChainWrapper<T> query();// 链式查询 lambda 式。注意:不支持 Kotlin
LambdaQueryChainWrapper<T> lambdaQuery();// 示例:
// eq 指定条件
query().eq("column", value).one();
lambdaQuery().eq(Entity::getId, value).list();

        链式更新演示:

// 链式更改 普通
UpdateChainWrapper<T> update();// 链式更改 lambda 式。注意:不支持 Kotlin
LambdaUpdateChainWrapper<T> lambdaUpdate();// 示例:
// eq 指定条件
update().eq("column", value).remove();
lambdaUpdate().eq(Entity::getId, value).update(entity);
http://www.dt0577.cn/news/1955.html

相关文章:

  • 响应式网站 图片尺寸奇数整合营销传播最基础的形式是
  • b2b网站做水处理哪个好奇葩网站100个
  • 营销型网站模板下载网页制作与设计教程
  • 银川网站建设redu知乎seo优化
  • 包头网络推广快速seo关键词优化方案
  • 网站建设维护协议书南宁百度快速排名优化
  • 手表购物网站排名网址seo关键词
  • 广东网站制作平台百度导航如何设置公司地址
  • 网站备案取名企业站seo外包
  • 做虾网站该起啥名好免费合作推广
  • 网站设计 注意上海百度推广开户
  • 医院做网站运维浏览器打开是2345网址导航
  • 河间做网站的电话免费的网站推广
  • 开发一个公众号需要多少钱seo应该怎么做
  • icp主体备案号 网站备案号浏览器下载
  • wordpress 积分购物北京网站优化哪家好
  • 成都网站建设名录bt磁力搜索引擎索引
  • 完善wordpressseo的目的是什么
  • hge网站做微端凡科网站官网
  • wordpress新建php页面模板seo优化技术培训
  • 淄博网站建设至信网络在线代理浏览网页
  • 优质的天津网站建设网络营销带来的效果
  • 成都游戏开发网站关键词优化排名软件
  • 汕头 做网站深圳推广优化公司
  • wordpress word文档360网站关键词排名优化
  • 内江住房和城乡建设厅网站网络营销的四大要素
  • 网站视频插件怎么做佛山网站建设工作
  • 拿品牌做网站算侵权吗优化设计答案五年级下册
  • 宿迁网站建设介绍公司今日预测足球比分预测
  • 世界服装鞋帽网免费做网站企业网站优化解决方案