2022.8.26_关于SpringMVC增加,修改,删除(批量删除),查询的操作

前言:文章倒序来讲,从简单到困难,课堂项目文件最终会上传放链接到首端

文章目录

前言

一、统计查询

二、 6. 查询最多1条数据

1.引入库

2.读入数据

在`BrandMapper`接口中添加抽象方法:

Mybatis会自动的将查询到的结果集中的数据封装到定义的返回结果类型中,但是,在默认情况下,只能处理列名(Column)与属性名(Property)一致的情况!在规范的软件开发中,推荐使用``来配置列与属性的映射关系:

关于以上``的配置:

- `id`属性:是自定义的名称,在``标签中的`resultMap`属性的值就是对应的``的`id`值- `type`属性:用于封装查询结果的类的全限定名- ``子标签:用于配置主键的列、属性的映射关系- ``子标签:用于配置普通(不是主键,也不是一对多、多对多的关联查询)的列、属性的映射关系另外,还建议使用``标签封装查询的字段列表,此标签需要与``标签配合使用,例如:三、 2. 关于SLF4j日志总结和最后:我文件中没有写关于更新、插入等操作,所以直接发布课件了,和查询流程都是一样的。关于sql文件数据库也在其中,关于如何快速导入sql文件也在课堂项目压缩包下,在idea最右边的database按钮中,详情可以自行搜索。


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、统计查询

第一步:首先在xml文件中插入如下语句,但首先我们得引入配置sql语句的xml模板。在我的资源里有MyBatis Mapper映射文件

SELECT count(*) FROM pms_brand;

第二步:在`BrandMapper`接口中添加抽象方法:(温馨提示在mapper中添加@Repositry注释)

```
int count();
````

第三步:

在`BrandMapper.xml`中配置SQL语句:```xml

  最终:目录结构如图所示,我们接下来都按照这种方式去写,

二、 6. 查询最多1条数据

1.引入库

代码如下(示例):

SELECT id, name, pinyin, logo, description, keywords, sort, sales, product_count, comment_count, positive_comment_count, enable 
FROM pms_brand 
WHERE id=?
通常,在处理查询时,并**不建议使用实体类型作为查询结果**,因为绝大部分查询都不需要查询表中所有的字段,如果使用实体类型, 必然导致查询结果对象调用某些Getter时得到的结果会是`null`,并且,这些Getter的返回结果永远会是`null`。
建议使用其它的POJO类型作为封装查询结果的类型!常见的POJO:- `DO`:Data Object
- `DTO`:Data Transfer Object
- `VO`:View Object / Value Object
关于POJO的使用:```
阿里巴巴Java开发手册
【参考】
领域模型命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
```另外:```
阿里巴巴Java开发手册
【强制】
类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
```

2.读入数据

代码如下(示例):

此次查询时,应该在项目的根包下,创建`pojo.vo.BrandStandardVO`类:

```java
@Data
public class BrandStandardVO implements Serializable {private Long id;private String name;private String pinyin;private String logo;private String description;private String keywords;private Integer sort;private Integer sales;private Integer productCount;private Integer commentCount;private Integer positiveCommentCount;private Integer enable;
}
```

在`BrandMapper`接口中添加抽象方法:

```java
BrandStandardVO getStandardById(Long id);
```

Mybatis会自动的将查询到的结果集中的数据封装到定义的返回结果类型中,但是,在默认情况下,只能处理列名(Column)与属性名(Property)一致的情况!
在规范的软件开发中,推荐使用``来配置列与属性的映射关系:

```xml


```

关于以上``的配置:

- `id`属性:是自定义的名称,在`SELECTFROMpms_brandWHEREid=#{id} id, name, pinyin, logo, description,keywords, sort, sales, product_count, comment_count,positive_comment_count, enable ```
# 7. 关于IntelliJ IDEA错误的预判**问题1:使用Lombok后,不会自动提示Setter和Getter,且使用相当方法后提示错误**在IntelliJ IDEA中安装Lombok插件即可。**问题2:使用Mybatis时,尝试自动装配Mapper接口的对象时提示错误**- 【推荐】在Mapper接口上添加`@Repository`注解即可
- 【不推荐】使用`@Resource`替换`@Autowired`另外,不使用`@MapperScan`,而是在每个Mapper接口上使用`@Mapper`也可以解决此问题!**问题3:在配置SQL的XML中,使用``节点封装字段列表时提示错误**- 【不推荐】在IntelliJ IDEA中进行配置,不检查SQL- 【推荐】使用某种合法的、不影响当前代码运行的代码片段,“骗”过IntelliJ IDEA即可,例如:

三、

【需求】查询品牌列表,暂不考虑分页,结果按照`sort`降序排列、`id`升序(降序)。需要执行的SQL语句大致是:

```mysql
select id, name, pinyin, logo, description, keywords, sort, sales, product_count, comment_count, positive_comment_count, enable
from pms_brand order by sort desc, id
```
则在项目的根包下创建`pojo.vo.BrandListItemVO`类,在类中声明与以上字体列表匹配的属性:
```java
package cn.tedu.csmall.product.pojo.vo;import lombok.Data;import java.io.Serializable;@Data
public class BrandListItemVO implements Serializable {private Long id;private String name;private String pinyin;private String logo;private String description;private String keywords;private Integer sort;private Integer sales;private Integer productCount;private Integer commentCount;private Integer positiveCommentCount;private Integer enable;}
```
在`BrandMapper.java`接口中添加抽象方法:
```java
/*** 查询品牌列表** @return 品牌列表,如果没有匹配的品牌,将返回长度为0的列表*/
List list();
```
在`BrandMapper.xml`中配置SQL:
```xml
id, name, pinyin, logo, description,keywords, sort, sales, product_count, comment_count,positive_comment_count, enable



```
完成后,在`BrandMapperTests`中编写并执行测试:
```java
@Test
void testList() {List list = mapper.list();System.out.println("查询品牌列表,查询结果中的数据的数量:" + list.size());for (BrandListItemVO brand : list) {System.out.println(brand);}
}

 2. 关于SLF4j日志

在Spring Boot项目中,在`spring-boot-starter`依赖项中,默认已经集成了SLF4j日志框架。在添加了`Lombok`依赖项后,可以在需要输出日志的类上添加`@Slf4j`注解,则Lombok框架会在编译期自动添加名为`log`的日志变量。日志的显示级别,根据日志信息内容的重要程度,从低到高依次为:- `trace`:跟踪信息
- `debug`:调试信息
- `info`:一般信息
- `warn`:警告信息
- `error`:错误信息在SLF4j中,调用`log`变量时,有以上5种级别对应的方法,调用与日志显示级别对应的方法,则输出的日志就是对应的级别,例如调用`log.debug()`时,输出的日志就是DEBUG级别的日志,调用`log.warn()`时,输出的日志就是WARN级别的日志。在Spring Boot项目中,默认的显示级别是`info`,相比`info`较低级别的日志不会被输出!在Spring Boot项目中,可以在`application.properties`中通过`logging.level.包名`属性来设置日志的显示级别:```properties
# 日志的显示级别
logging.level.cn.tedu.csmall=trace
```关于以上配置:- 包名部分,必须至少写1级包名,例如`logging.level.cn`,如果没有包名,则是错误的
- 配置的包名是”根包“,所以子孙包及其下的所有类的日志都会是以上配置的级别
- 如果认为有必要的话,甚至可以配置到具体的类使用日志的好处:- 可以通过简单的配置,实现控制日志的显示级别,所以,可以使得某些日志仅开发时能输出,在生产环境中不会输出
- 使用日志时,可以使用常量字符串,输出结果中的变量值均在此常量字符串中使用占位符表示即可,所以,字符串的处理效率非常高,并且,代码简洁

以上直接在每个测试类最上方加入@logf4j即可,把输出语句全部改为日志输出语句,另外在application.porperties配置文件中可以设置这个日志级别信息

# 日志的显示级别
logging.level.cn.tedu.csmall=trace

总结和最后:我文件中没有写关于更新、插入等操作,所以直接发布课件了,和查询流程都是一样的。关于sql文件数据库也在其中,关于如何快速导入sql文件也在课堂项目压缩包下,在idea最右边的database按钮中,详情可以自行搜索。还有关于跟新操作为什么用而不用SET字段,稍后再说

课件地址

https://download.csdn.net/download/m0_62774456/86511027


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部