欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-07-10

说明:

(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_datasourcespring.datasource.url=jdbc:mysql://127.0.0.1:3306/imooc_mall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghaispring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.username=rootspring.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不显示红色波浪线,所以对于原本出错的地方,我们就没办法去修复了;

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。