第三天 2.16
上午
IDEA使用继续
-
在IDEA中新建mySQL表
-
在pojo包中创建一个HelloSQL类文件
-
MySql中表的名称、字段名陈不区分大小写。
-
com.gxaedu.crm.pojo包中包含的是所有的表对象。当前工程需要用到那些表,那么应该把这些表一类的形式个保存在pojo包中。做到表和类一一对应需要满足:
-
类名 = 表名;
-
类中属性名 = 表中字段
-
-
mysql中中的int = java中的int, mysql中的varchar = java中的String。
-
Java中的bean规范,需要为所有属性设置私有属性,并且设置相应的get和set方法。
-
补充问题equals()的内核如何编写的, hashCode()如何工作的?
-
在pojo包中创建完毕一个pojo之后,对应pojo会创建一个mapper接口,此接口的命名规则,以pojo类名作为接口的前缀名,接口的后缀使用Mapper; 最后在resources/mapper文件夹中创建一个和pojo包中接口名一样名字的XML文件
-
pojo三个关键点:
-
pojo中的类对应的是表;
-
pojo中的mapper接口关联resources/mapper/mapper.xml文件;
<mapper namespace = "com.gxaedu.crm.pojo.HelloSQLMapper"> <!-- namespace的作用是关联对应的mapper接口 --> <!-- 点出来的方式叫做导航功能,主要是为了准确 --> <!-- mapper中编写的就是各种各样的SQL语句和类类型关联 --> <insert id=""></insert> <delete id=""></delete> <update id=""></update> <select id="selectUser" resultType="com.gxaedu.crm.pojo.HelloSQLMapper"> select h.id, h.username, h.password from hellosql h; </select> <!-- 其中id属性是唯一的,没一个sql操作语句都是单独一个id; id其实是pojo/mapper接口定义的抽象方法名; --> <!-- resultType属性指定的是返回什么pojo类型,需要加上包名。 --> </mapper>
-
mapper.xml文件需要书写sql语句;
-
-
JAVA中的注解
-
解析注解 通过反射来获取类,方法,接口,或成员上的运行时注解信息,从而实现动态控制程序运行时的逻辑。反射是在运行时的,所以我们使用反射时解析,必须注解的生命周期是运行时。
-
-
Spring中的Bean理解:
-
在Spring中,Bean是指构成程序的主干并且由Spring IOC容器管理的对象。Bean是一个由SpringIOC容器实例化、组装和管理的对象。(简单说:Bean是对象,一个或者多个;它由Spring中一个叫IOC的东西管理;应用程序由一个个bean构成。)
-
IOC就是控制反转,它是一个定义对象之间依赖而不创建他们的过程。
-
-
-
让Spring控制类构建的过程
-
不需要new,让Spring控制new过程: Spring启动时会把所需的类实例化成对象,如果需要依赖,则先实例化依赖,然后实例化当前类。因为依赖必须通过构造函数传入,所以实例化时,当前类就会接受并保存所有依赖的对象。这一步也就是所谓的依赖注入。
注意,依赖指的是A类中有B类的属性或者方法的使用,此时当没有B类时,将会对A类的实例化造成影响。
-
在Spring中,类的实例化、依赖的实例化、依赖的传入都交由SpringBean容器控制,而不是使用
new
方式实现实例化对象、通过非构造函数方法传入依赖等常规方式。实质控制权已经交由程序控制管理,而不是程序员管理,所以叫做控制反转。 -
JAVA的Spring框架中注解分为两类:
-
一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的封装;比如@Autowired, @Resource,可以通过byType(@Autowired)、byName(@Resource)的方式获取Bean;
-
一类是注册Bean,@Component, @Repository, @Controller, @Service, @Configration这些注解都是吧你要实例化的对象转化成一个Bean, 放在IOC容器中,等你要使用的时候,它会和上面的@Autowirted, @Resource配和到一起,把对象、属性、方法完美组装。
-
-
总结:凡是子类及带属性、方法的类都注册Bean到Spring中,交给它管理。Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。
-
下午
-
遇到的几种简单错误: 1. 返回多条数据记录错误; 2. 数据库8.0的驱动问题; 3. idea中文插件问题, 企业中不允许使用中文插件; 4. pojo属性决定返回显示内容 5. 红色下划线代表语法错误 6. 手抖写错路径 7. tomcat运行问题 8. tomcat中加载项目问题 9. war包级别运行,语法检查问题
-
SSM执行流程:(生命周期)
-
启动WEB服务器
-
web服务器会加载web/WEB-INF/web.xml文件
-
通过web.xml中Spring和spring mvc的资源路径,读取文件中的spring和spring mvc配置项(对应的资源包路径)
-
首先读取spring的配置文件(spring_database.xml),SpringIOC容器会开始启动,并且扫描指定的包路径
<context:component-scan base-package="com.gxaedu.crm.service"/>
-
扫描所有的mapper指向路径(纳入Spring管理 初始化对象) com.gxaedu.crm.pojo
-
扫描所有的service指向路径(纳入spring管理 初始化对象)com.gxaedu.crm.service
-
读取spring mvc配置文件(spring_mvc.xml)
-
扫描所有的controller指向路径(纳入spring mvc管理 初始化对象) com.gxaedu.crm.controller
-
到此为止,扫描加载全部完成
-
注意:Spring mvc中只有单实例化对象没有多实例化对象。
-
-
服务器405报错是因为什么?
-
SSM生命周期详细:
-
启动WEB服务;
-
WEB服务器加载
web.xm
l文件; -
通过
web.xml
自动调用Spring配置项和SpringMVC
配置项。 -
读取Spring配置项和
SpringMVC
配置项中指定的Spring、SpringMVC
配置文件。 -
首先加载Spring配置文件,
SpringIOC
容器会开始启动,并且扫描指定的包路径<context:component-scan base-package="com.gxaedu.crm.service"/>
-
当扫描到此路径对应的
Serivce
类时,会自动初始化(调用此Service类的构造函数), 并且放置到Spring IOC
容器中。 -
Spring还会扫描
mybatis
被纳入管理的xml文件<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-
这时,会开始加载
SpringMVC
的配置内容,SpringMVC
容器开始启动,并且扫描指定的Controller
包<context:component-scan base-package="com.gxaedu.crm.controller"/>
-
当扫描到此路径的
Controller
类时,会自动初始化(调用此Contreller
类的构造方法),并且将对象放置到IOC容器中。 -
SpringMVC
会根据配置文件中的静态资源配置项,来对所有的静态内容放行。 -
上述步骤启动完,整个SSM工程成功运行。
-