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

网站建设维护的职位品牌网站设计公司哪家好

网站建设维护的职位,品牌网站设计公司哪家好,苏州新区做网站,购物网站的开发目录 一、SpringBoot整合mybatis 二、SpringBoot整合mybatis-plus 1、什么是mybatis-plus#xff1f; 2、mybatis-plus的特性 3、mybatis-plus的使用 #xff08;1#xff09;编写注解配置实体类与关系表映射关系 #xff08;2#xff09;mapper层 #xff08;3…目录 一、SpringBoot整合mybatis 二、SpringBoot整合mybatis-plus 1、什么是mybatis-plus 2、mybatis-plus的特性 3、mybatis-plus的使用 1编写注解配置实体类与关系表映射关系  2mapper层 3test层 新增 修改ID 修改 查询ID 查询ID 查询count 查询list 分页查询 查询delete 基于条件查询 Account 表中的记录 模拟动态查询1 模拟动态查询2 投影查询-字段查询 逻辑删除 一、SpringBoot整合mybatis 主要是融合mybatis对数据库操作的方式和SpringBoot框架进行整合大概的框架结构为 首先是在pom.xml中导入mybatis坐标 dependencies!--mybatis坐标--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.2/version/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.28/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies 然后是创建实体类pojo再创建mapper层用来定义方法 // Mapper //注册注入一个mapper public interface AccountMapper {Select(select * from account)public ListAccount findAll();public ListAccount find(); } 通过MapperScan实现注册注入多个mapper以包为单位指定一个或多个包路径Spring 会扫描这些包中的所有 Mapper 接口并将它们注册为 Spring 容器中的 Bean。可以避免在每个 Mapper 接口上单独添加 Mapper 注解简化了 MyBatis 与 Spring 的集成配置。 Mapper是标识某个接口为 MyBatis 的 Mapper适合单个接口的配置通常用于不使用 MapperScan 的情况下。 然后在resources底下创建mappers包里面创建AccountMapper.xml配置文件 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.apesource.mybatis_springboot.mapper.AccountMapperselect idfind resultTypecom.apesource.mybatis_springboot.pojo.Accountselect * from account;/select /mapper 其中namespace是将这个xml文件映射到目标路径的接口中去其中的对应接口中的find()方法完成数据库操作。 yml文件中的配置为 spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/homework?serverTimezoneGMTdriver-class-name: com.mysql.cj.jdbc.Driver mybatis:mapper-locations: mappers/*.xml 其中配置了数据库的相关信息连接和mapper-locations: mappers/*.xml指定 MyBatis 的 Mapper XML 文件的位置模式。mappers/*.xml 表示 Spring Boot 会在类路径下的 mappers 目录中查找所有以 .xml 结尾的文件这些文件定义了 MyBatis 与数据库之间的 SQL 映射关系。 二、SpringBoot整合mybatis-plus 1、什么是mybatis-plus MyBatis-Plus 是一个基于 MyBatis 的增强工具它旨在简化 MyBatis 的开发过程提供了很多开箱即用的功能使得开发者可以更加高效地进行持久层开发。MyBatis-Plus 不改变 MyBatis 原有的 API 和功能而是在其基础上提供了更丰富的功能和自动化工具。 MyBatis-Plus 提供了一套通用的 CRUD 接口只需要简单地继承这些接口就可以获得常用的 CRUD 操作方法如 insert、delete、update 和 select减少了大量重复的代码。 MyBatis-Plus 还可以实现自动填充、逻辑删除、分页插件、代码生成器等功能。 2、mybatis-plus的特性 3、mybatis-plus的使用 首先是导入坐标mp坐标添加后mybatis坐标就可以移除。 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.1.1/version/dependency 然后是实体类Account TableName(account) public class Account {TableId(value aid,type IdType.AUTO)private int aid;TableField(aname)private String aname;TableField(amoney)private int amoney;TableField(aage)private int aage;TableField(ahobby)private String ahobby;// 构造方法// set/get方法 toString方法... } 1编写注解配置实体类与关系表映射关系  TableName 用途指定该类映射的数据库表名为 account。 作用TableName 注解告诉 MyBatis-Plus这个实体类 Account 对应的数据库表名是 account。这个表名可能与类名不同注解通过明确表名来建立映射关系。 TableId 用途指定主键字段 aid 的映射关系和主键生成策略默认雪花算法。 属性说明 value aid: 表示这个字段在数据库表中的列名是 aid。type IdType.AUTO: 指定主键生成策略为自增 (AUTO)即数据库会自动生成主键值通常是自增的整数。 TableField 用途指定字段 aname 在数据库表中的列名主要是用于害怕字段名与属性名称不相同用于对应映射关系。 作用TableField(aname) 注解将类中的 aname 字段映射到数据库表中的 a_name 列。MyBatis-Plus 会根据这个映射关系进行数据库操作。 2mapper层 接口继承了BaseMapper接口 public interface AccountMapper extends BaseMapperAccount {Select(select * from account)public ListAccount findAll();public ListAccount find();} BaseMapper通常是一个通用的MyBatis接口提供了基本的CRUD操作。AccountMapper继承了它因此可以使用BaseMapper中定义的所有基本数据库操作方法。 config层定了一个叫MyBatisPlusConfig的类 Configuration public class MyBatisPlusConfig {//注入mp拦截器Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){//1.实例化拦截器MybatisPlusInterceptor mybatisPlusInterceptor new MybatisPlusInterceptor();//2.分页拦截器mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}} MybatisPlusInterceptor创建了一个 MybatisPlusInterceptor 的实例。这个拦截器是MyBatis Plus提供的用于处理SQL执行过程中的各种拦截任务。 PaginationInnerInterceptor添加到 MybatisPlusInterceptor 中。分页拦截器用于处理分页查询的SQL语句它会自动将分页参数如页码、页大小应用到查询语句中。 return mybatisPlusInterceptor是将配置好的 MybatisPlusInterceptor 实例返回并将其注册为Spring容器中的一个Bean。这意味着MyBatis Plus将使用这个配置的拦截器来处理SQL语句。 3test层 测试层中去写相关方法 新增 Testpublic void show1(){Account account new Account(郝喵喵, 2000);int row mapper.insert(account);System.out.println(主键回填idaccount.getAid());System.out.println(影响行数row);} 新建实体类对象调用CRUD 接口的方法insert插入数据库返回受影响行数。并且mubatis-plus中的方法实现了自动主键回填。 修改ID Testpublic void test02()throws Exception{Account account new Account(3,郝苗苗,3000);int row mapper.updateById(account);System.out.println(影响行数:row);} 同样调用了CRUD接口中的方法。 修改 Testpublic void test03()throws Exception{//1.数据Account account new Account();account.setAhobby(打麻将);account.setAage(18);//2.修改条件QueryWrapperAccount wrapper new QueryWrapperAccount();wrapper.eq(aname,郝苗苗);mapper.update(account,wrapper);} 其中的创建一个 QueryWrapper 对象用于指定更新操作的条件。wrapper.eq(aname,郝苗苗)设置条件表示选择 aname 列的值等于 郝苗苗 的记录。这是一个等值匹配条件。mapper.update(account, wrapper); 调用 mapper 对象的 update 方法相当于CRUD接口中的方法。 查询ID Testpublic void test04()throws Exception{Account account mapper.selectById(3);System.out.println(account);} 调用的CRUD接口中selectById的方法。 查询ID Testpublic void test05()throws Exception{ListAccount list mapper.selectBatchIds(Arrays.asList(5,1,3));for (int i 0; i list.size(); i) {Account account list.get(i);System.out.println(account);}} 调用了 mapper 对象的 CRUD接口中 selectBatchIds 方法从数据库中批量查询ID为 5、1、3 的 Account 记录。 查询count Testpublic void test06()throws Exception{int count mapper.selectCount(null);System.out.println(count);} 查询list public void test07()throws Exception{QueryWrapperAccount queryWrapper new QueryWrapper(); // queryWrapper.eq(ahobby,打麻将); // queryWrapper.eq(aage,18);queryWrapper.eq(ahobby,打麻将).or().eq(aage,18);ListAccount list mapper.selectList(queryWrapper);for (int i 0; i list.size(); i) {Account account list.get(i);System.out.println(account);}} 可以使用上面注释掉的分别构建查询条件或者是下面的用or()方法连接的查新条件表示只需要满足其中一个条件而不必同时满足两个条件。 分页查询 Testpublic void test08()throws Exception{//1.定义分页规则PageAccount page new PageAccount();page.setSize(3);//每页记录数page.setCurrent(2);//当前页码//2.查询条件(可选)QueryWrapper queryWrapper new QueryWrapper();IPageAccount iPage mapper.selectPage(page,null);ListAccount list iPage.getRecords();//分页结果System.out.println(总记录数iPage.getTotal());System.out.println(总记页数iPage.getPages());for (int i 0; i list.size(); i) {Account account list.get(i);System.out.println(account);}} 这个是基于mybatis-plus的分页使用注意page.setCurrent(2)当前页码从1开始分页需要配置插件。 首先通过创建Page对象定义分页的规则page.setSize(3); 设置每页显示的记录数为 3page.setCurrent(2); 设置当前页码为 2。这意味着查询结果将从第二页开始每页包含3条记录。 这里调用selectPage方法传入分页规则 page 和查询条件这里传入 null 表示没有额外条件。 最后通过.getRecords()方法从 iPage 对象中提取出分页查询的结果即当前页的 Account 记录列表输出打印。 查询delete Testpublic void test09()throws Exception{mapper.deleteById(4);} 基于条件查询 Account 表中的记录 Testpublic void show1(){//1.查询条件// LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询构建器用于构建查询条件。这里创建了一个针对 Account 实体类的查询构建器实例。LambdaQueryWrapperAccount lambdaQueryWrapper new LambdaQueryWrapperAccount();// 查询大于18的account对象lambdaQueryWrapper.gt(Account::getAage,18);//2.查询ListAccount list mapper.selectList(lambdaQueryWrapper);for (int i 0; i list.size(); i) {Account student list.get(i);System.out.println(student);}} 创建一个 LambdaQueryWrapper 对象用于构建SQL查询的条件。LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询构建器主要用于在查询时构建更安全和灵活的条件特别适用于避免字符串拼接带来的潜在问题。使用 gt 方法指定查询条件这里的 gt 表示 greater than大于。 Account::getAage 指定 Account 实体类中的 aage 属性意味着我们要查询 aage 大于 18 的记录。 模拟动态查询1 Testpublic void show2(){//1.前端发送来的数据Integer num1 null;Integer num2 30;//1.查询条件LambdaQueryWrapperAccount lambdaQueryWrapper new LambdaQueryWrapperAccount();//2.判断if(null ! num2){lambdaQueryWrapper.lt(Account::getAage,num2);}if(null ! num1){lambdaQueryWrapper.gt(Account::getAage,num1);}//3.查询ListAccount list mapper.selectList(lambdaQueryWrapper);for (int i 0; i list.size(); i) {Account student list.get(i);System.out.println(student);}} num1 为 null表示没有传递下限的条件num2 为 30表示查询的上限年龄为30即查询小于30岁人。 模拟动态查询2 Testpublic void show3(){//1.前端发送来的数据Integer num1 null;Integer num2 30;//1.查询条件LambdaQueryWrapperAccount lambdaQueryWrapper new LambdaQueryWrapperAccount();//2.判断lambdaQueryWrapper.lt(null ! num2,Account::getAage,num2);lambdaQueryWrapper.gt(null ! num1,Account::getAage,num1);//3.查询ListAccount list mapper.selectList(null);for (int i 0; i list.size(); i) {Account student list.get(i);System.out.println(student);}} 其他均一样第一个参数 null ! num2 是一个布尔值用于控制这个条件是否会被加入到查询中。因为 num2 不为 null所以后面的这个条件会被应用。 第一个是判断条件条件成立后从Acount中取getAage属性并把第三个参数作为条件。 投影查询-字段查询 Testpublic void show4() {// 查询只包含的条件的对象//1.条件LambdaQueryWrapperAccount lambdaQueryWrapper new LambdaQueryWrapperAccount();// 这行代码使用 select() 方法指定只查询 Account 表中的 Aname姓名和 Ahobby爱好两个字段。lambdaQueryWrapper.select(Account::getAname,Account::getAhobby);//2.查询ListAccount list mapper.selectList(lambdaQueryWrapper);//4.遍历for (int i 0; i list.size(); i) {Account student list.get(i);System.out.println(student);}} 这行代码使用 select() 方法指定只查询 Account 表中的 Aname姓名和 Ahobby爱好两个字段只查询拥有Aname和Ahobby的对象。 逻辑删除 物理删除业务数据从数据库中丢弃执行的是delete操作。逻辑删除为数据设置是否可用状态字段删除时设置状态字段为不可用状态数据保留在数据库中执行的是update操作。 实现步骤 步骤1修改数据库表添加deleted列比如0代表正常1代表删除可以在添加列的同时设置其默认值为0正常。 步骤2实体类添加属性以及注解TableLogic(value0,delval1)用于实现逻辑删除功能。value0: 表示记录在未被删除的情况下该字段的值是什么。通常0 表示数据正常。delval1: 表示记录被逻辑删除时该字段的值会被设置为 1。逻辑删除是指不直接从数据库中删除记录而是通过改变字段值来标识数据已被删除。 TableLogic(value 0,delval 1) private int delval; 示例代码 //逻辑删除Testpublic void show7() {mapper.deleteById(5);} 这样就会根据delval属性进行逻辑删除了但是不会改变数据库中的信息删除完成后数据库中的delval属性从0变为1。
http://www.w-s-a.com/news/327105/

相关文章:

  • 网站模板平台广告宣传网站
  • cc域名的网站做网站放太多视频
  • 让公司做网站要注意什么建设工程公司企业文化
  • 佛山搭建建网站哪家好微信如何建立自己的公众号
  • 联想公司网站建设现状广州建网站兴田德润团队
  • 网站开发的技术有网页设计实训报告工作内容和步骤
  • 视频做网站长沙网站制作平台
  • js网站建设北京seo公司优化网络可见性
  • 付款网站源码建网站卖东西
  • 用php做的录入成绩的网站wordpress等级插件
  • 网站运营优化方案广西桂林公司
  • 快递网站策划怎么做ppt长春建设信息网站
  • 做服装搭配图的网站有哪些经营一个网站要怎么做
  • 呼市品牌网站建设那家好增城住房和建设局网站
  • 网站首页布局设计代码太仓网站开发建设服务
  • 学校网站建设与管理porto wordpress模板
  • 余姚做网站公司网站建设有哪些基本流程
  • 门户网站建设的报价百度医生在线问诊
  • 北京公司注册在哪个网站浏览器打开网址404
  • 廊坊做网站公司绣花图案设计网站
  • 网站空间租用哪个好购物网站建设模板图片
  • 建设银行包头分行网站泰安网签成交量最新
  • 手机微网站与微官网现在去成都需要隔离吗
  • 学校的二级网站怎么建设深圳企业网站制作设计
  • 自己做qq头像静态的网站网站建设是属于软件开发费吗
  • 举报网站建设做网站之前的工作
  • 用QQ群做网站排名个人网站制作协议
  • 做茶叶网站的素材天津网站营销
  • 网站设计建设流程图微信端的网站开发python
  • 湖州网站seo优化网站改域名备案