IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot电商项目9:数据库设计与项目初始化四:在配置文件中,配置数据库、配置Mapper.xml位置;在主程序处通过@MapperScan配置Mapper接口位置;第一次全流程演示; -> 正文阅读

[Java知识库]Spring Boot电商项目9:数据库设计与项目初始化四:在配置文件中,配置数据库、配置Mapper.xml位置;在主程序处通过@MapperScan配置Mapper接口位置;第一次全流程演示;

说明:

(1)本篇博客内容和需要注意的点:

? ? ? ? ? ●?application.properties文件中,配置数据库;(包括数据库连接字符串、数据库驱动类、用户名、密码)(同时设置了项目的接口为8083)

? ? ? ? ? ●?走了一遍Controller-Service-Dao全流程;

? ? ? ? ? ●?注入的时候,更多的可以使用@Autowired而不是@Resource了;

? ? ? ? ? ●?配置Mapper.xml和Mapper接口的位置:在application.properties配置文件中,指定Mapper.xml文件的位置;;;同时,总结了【单纯的Mybatis项目】【Spring?MVC和Mybatis整合项目】中,如何配置;

? ? ? ? ? ●?涉及到了【注入Mapper接口对象时,如何解决IDEA“报错”的问题】;

目录

一:在application.properties文件中,配置数据库;?

1.前面,我们生成了大量的Mapper接口和mapper.xml文件,这些是需要连接数据库的;但又因为,项目没有配置数据库;所以,此时程序是跑不起来的;

2.在application.properties配置文件中,配置数据库;(重要!!!)

3.此时,我们在运行项目,发现其跑起来了;

二:走一遍Controller-Service-Dao流程;

1.实体类、Mapper接口、Mapper.xml文件,在前面已经通过【mybatis-generator】插件,自动生成了;

2.创建Service层;

(1)创建UserService接口,定义一个查询用户的方法getUser()方法;

(2)创建UserServiceImpl实现类,去实现getUser()方法;

3.创建Controller层;

4.在application.properties配置文件中,指定Mapper.xml文件的位置;(同时,总结了【单纯的Mybatis项目】【Spring?MVC和Mybatis整合项目】中,如何配置Mapper.xml和Mapper接口的位置;)

5.在MallAppliccation程序入口类处,使用【@MapperScan注解】,指定Mapper接口的位置;(同时,总结了【单纯的Mybatis项目】【Spring?MVC和Mybatis整合项目】中,如何配置Mapper.xml和Mapper接口的位置;)

6.运行项目,观察效果;

7.一个小问题:Service注入Mapper对象时,由于IDEA不识别,而导致的红色波浪线问题;


?

一:在application.properties文件中,配置数据库;?

1.前面,我们生成了大量的Mapper接口和mapper.xml文件,这些是需要连接数据库的;但又因为,项目没有配置数据库;所以,此时程序是跑不起来的;

如果,此时我们启动项目:

2.在application.properties配置文件中,配置数据库;(重要!!!)

spring.datasource.name=imooc_mall_datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/imooc_mall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345

说明:

(1)配置内容说明;?

3.此时,我们在运行项目,发现其跑起来了;


二:走一遍Controller-Service-Dao流程;

1.实体类、Mapper接口、Mapper.xml文件,在前面已经通过【mybatis-generator】插件,自动生成了;

2.创建Service层;

(1)创建UserService接口,定义一个查询用户的方法getUser()方法;

(2)创建UserServiceImpl实现类,去实现getUser()方法;

说明:

(1)这儿注入的时候,为什么要用@Autowired而不是@Resource了

? ? ? ? ? ●?通过【Spring IoC容器与Bean管理22:使用注解方式实现Spring IoC三:自动装配注解(对象依赖注入);自动装配注解之【按类型装配注解】(@Autowired)的使用和缺点;】和【Spring IoC容器与Bean管理23:使用注解方式实现Spring IoC四:自动装配注解(对象依赖注入);自动装配注解之【按名称装配注解】(@Resource)的使用;】这两篇博客能迅速知道:这里使用@Autowired或者@Resource都可以用来装配bean。不同的是@Autowired 属于Spring的注解,@Resource属于JDK的注解。@Autowired默认按类型装配 ,@Resource默认按照名称进行装配。

? ? ? ? ? ●?而且,如果我们的文件命名、书写,都按照Spring的规范来的话,@Autworied注解是完全没问题的;所以,既然这儿这样用了;那就说明在实际开发中,@Autowired注解也是可以普遍应用的;

(2)自然,要记得在UserServiceImpl类上使用@Service注解,以便让IoC容器管理这个对象;

3.创建Controller层;

说明:

(1)我们在创建Spring?Boot项目的时候,通过【spring-boot-starter-parent】;其就会,自动引入Jackson这款JSON序列化工具;

然后,又可以参考【SpringMVC入门与数据绑定11:响应输出结果;(@ResponseBody简介;ModelAndView引入;)】,

RESTful开发风格6:RESTful基本使用四:JSON序列化;(jackson组件,以及其中的 @JsonFormat注解来解决时间问题;)】,

SSM开发书评网13:图书列表分页及查询三:图书分页查询(2);(Controller部分;前端部分开发了一半)】;这三篇博客可知,因为我们已经配置了jackson,所以其可以自动把【方法返回的实体对象】序列化为【JSON字符串】;即,上面方法返回的User对象,其会自动把User对象序列化为JSON字符串;

4.在application.properties配置文件中,指定Mapper.xml文件的位置;(同时,总结了【单纯的Mybatis项目】【Spring?MVC和Mybatis整合项目】中,如何配置Mapper.xml和Mapper接口的位置;)

mybatis.mapper-locations=classpath:mappers/*.xml

说明:

(1)如下解释:

(2)上面的情况进一步介绍:

? ? ? ? ? ●?单纯使用Mybatis框架的时候:我们需要在mybatis-config.xml文件中,配置Mapper.xml文件的位置;

可以参考【MyBatis入门五:MyBatis基本使用三:MyBatisUtils工具类;以查询为例,演示mybatis的一个工作流程;】;

同时,通过【OA系统十二:设置默认首页顶部导航栏的用户名 ;(【基于Xml配置下,使用Mapper接口】的方式!!!!!)】可以知道,在Mybatis项目中,因为在xml文件中我们指定了Mapper接口的位置,所以我们只需要在mybatis-config.xml文件中配置Mapper.xml中就行了,而不用配置Mapper接口的位置了;

? ? ? ? ? ●?Spring?MVC和Mybatis整合项目中:我们是通过在applicationContext.xml中,配置Mapper扫描器去扫描Mapper接口,进而也能去获取Mapper.xml文件了的方式来实现的;如,可以参考【SSM开发书评网5:项目准备与SSM整合三:Spring与Mybatis整合;(引依赖,配置数据源,配置SqlSessionFactory,配置Mapper接口扫描器,创建mybatis配置文件)】;

? ? ? ? ? ●?但是,这儿Spring?Boot项目中,我们直接配置去扫描mapper.xml文件了;能够感觉到,Spring?Boot项目,针对Mybatis的内容,作了一定程度的封装;

所以,能够感觉到,Spring?Boot,Spring?MVC在整合Mybatis这件事上,具体做法是不同的;虽然其中的细节自己不清楚,但可以肯定其底层原理是一样的;只是上层的封装效果不同而已;

(3)然后,上面顺便设置了项目的接口为8083;

5.在MallAppliccation程序入口类处,使用【@MapperScan注解】,指定Mapper接口的位置;(同时,总结了【单纯的Mybatis项目】【Spring?MVC和Mybatis整合项目】中,如何配置Mapper.xml和Mapper接口的位置;)

说明:

(1)上面配置后,Spring就能知道我们的Mapper接口在哪儿了,也就能去创建Mapper接口对应的对象了;

6.运行项目,观察效果;

7.一个小问题:Service注入Mapper对象时,由于IDEA不识别,而导致的红色波浪线问题;

之所以,上面会提示红色波浪线是因为:对于IDEA来说,要想在UserServiceImpl类中注入UserMapper对象,那么UserMapper类上(它其实是个接口啦)就需要有一些注解来提示的;;否则IDEA也不知道UserMapper类是否可以被引入;

………………

但是,我们在入口处的配置,制定了Mapper接口的位置;;;其实,这儿的配置是给Mybatis识别用的;

即,【Mapper接口在哪儿】这个信息,我们告诉了Mybatis,没有告诉IDEA;;;所以,上面IDEA会提示红色波浪线;

………………………………

为此,我们可以在Mapper接口上使用@Repository注解,这样以后IDEA就会认为这个Mapper接口是个资源,然后我们在Service类中注入Mapper对象的时候,IDEA就不会提示红色波浪线了;(能够感受到在Mapper接口上,使用@Repository注解,是不太符合Spring规范的;;;;即,在Mapper接口上使用@Repository注解,有点应付IDEA的意思)


目前,能够明白,上面的红色波浪线,丝毫不影响程序的正常运行,其仅仅是IDEA不识别导致的;;;但是,这个红色波浪线,很容易让我们误以为程序是有问题的;所以,尽量消除这种波浪线是有必要的;

自然,我们也可以在IDEA中,设置不显示红色波浪线;;;但是这种方法不能用,杀伤面太大;;;因为,比如有的地方,我们程序编写错了,其应该有红色波浪线提示的,但是因为我们设置了IDEA不显示红色波浪线,所以对于原本出错的地方,我们就没办法去修复了;

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:33:44  更:2022-02-09 20:35:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:24:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码