知识回顾
-
springmvc,springioc,springaop;
-
1、springmvc+jsp
-
2、springmvc + json
1
-
ioc+springmvc开发案例
-
mvc-servlet;就是fileNotFoundExeception异常的那个错误
-
扫包的时候连子包一起扫
-
ContextLoaderListener
-
classpath:application.xml
- 乱码过滤器
ajax+mvc
导包
-
导入servlet
-
jsp和jstl不需要了
-
lombok导入
-
jdbcUtil
-
spring-webmvc
-
fastjson
-
配置DispatcherServlet(核心拦截器)
-
原则上配置文件放在resources
-
namespace 可以修改名字,不能修改目录
-
classpath是那一层目录?是resources和java目录
-
读配置文件在运行期间干,就是target的classes,运行时两个跑一块(java和resources),成为classes
-
乱码过滤器:配置在web.xml
- 配置监听器zai web.xml
contextConfigration
classpath:applicatinContext.xml
org.springframework.web.context.ContextLoaderListener
springmvc.xml中的跨域问题
- /* 表示一层目录
- /** 表示无限层目录
- mvc:cors
<mvc:mapping path="/**"></mvc:mapping>
</mvc:cors>
ajax请求格式
$.ajax({
url: 'http://localhost/user/list',
type: 'get',
dataType: 'json',
success: function(response){
console.log(response)
}
})
day0803下午
########## mybatis
-
发展史:早期名字Ibatis apache,(1.xx 2.xx)
-
是一款持久层框架:
持久层:能把数据存住的那层。
说白了,就是Dao层框架 -
思维:ORM
-
object relational Mapping(对象关系映射)
-
pojo数据模型, 类-- 表
-
类中的属性去映射表中的字段
-
hibernate框架: 把类和表配置映射关系
类中的属性关系到表中的某个字段,操作java对象等同于操作数据库了。。查多少个java对象, 数据库查有多少记录, 保存一个java对象,根据对象所属的类,直接保存到相应的表中
特点:根本不需要我们自己写sql语句,根据配置自动生成生成,
存在效率问题:因为往往通过sql语句优化性能
并且Hibernate比较重量级
hibernate功能复杂, -
mybatis: 半orm框架,sql还是自己写,查询返回的结果会自动映射为对象或者List,我们的jdbc就是一个orm的思想*****
-
java: JDBC连接数据库,对数据库进行操作
-
只有数据库服务器能够执行sql语句********
-
传sql语句到服务器,服务器执行,将结果返回到java中
-
每调用一次dao层,相当于执行了一次IO操作,所以需要输入流和输出流,所以输入流和输出流都在连接Connecton中
-
jdbc老是不断的创建和销毁连接,是一件特别耗费性能
-
连接池:说白了就是一个容器,存放连接的池子(字面意义)
-
预先创建一个连接对象,在连接池里面存放,Connection对象
如果有人要用,发起一次连接,然后结束,就是一个会话;
每一次我想对sql语句执行,频繁的创建和销毁,(tnl),
现在不在销毁了,等着给别人用 -
连接池: 对比:
功能 性能
c3p0: 不要用它了
druid: -
每次都是一个会话,也有一个session—sqlsession,就是连接完了就执行sql语句的
-
sqlSessionFactory–>创建sqlSession,驱动,url,用户名,密码
-
我们怎么做呢?
-
1、导包
-
2、
-
& 符号转义 & &
空格
< <
>
- 1、导包
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
```java
* 2、创建mybatis配置文件
* 导入:从文档导入
* mapper中
< mapper namespace="">中随便起名,但是两个不同的mapper中不能有同一个namespace
* 标签名和sql 语句第一个单词要一致,id随便起名,但是用一个文件不能有重复的id
* 3、测试类中
定义mybatis配置的路径,通过路径获取输入流,通过输入流构建SqlSessionFactory,通过SqlSessionFactory创建SqlSession,通过Seession调用 增删改产,参数传namespace.标签id
* 总结: 这个方式根本就不这么用,(开发当中)
* 第二种方式
* mybatis面向接口开发,配置文件不变,mapper注意Mapper路径和文件名和 必须和dao接口和 路径一致(一个在resource中的xml对应dao 中的接口,文件名字一致)
* namespace必须是接口的完全限定名
* id必须对应接口中的方法名
* 接口里面 方法禁止 重载************
*
* 总结: 现在开发中也不是这样做的。。原生用法
#### 实际开发过程中的代码
* 最终方案: mybatis 集成到springioc中
* 说白了,就是讲sqlSessionFactory和Mapper对象器中放进IOC容器中即可
*
#### 现在的用法
* 1\先导入两个包,一个是mybatis-spring,一个spring-orm
导入mybatis,注意spring-orm和web-mvc版本号一致
* 2\配置连接池,先导包,druid
<bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" > </property> 配置的是set方法,不是属性名
<property name="url" value="jdbc:mysql://localhost:3306/db1?userUnicode=true&charsetEncoding=uftf-8" > </property>
<property name="username" value="root" > </property>
<property name="password" value="1234" > </property>
<property name="minIdle" value="8" > </property>
<property name="maxActive" value="20" > </property>
</bean>
* 3、配置sqlSessionFactory ,mybatis-spring下
<bean id="sqlSessionFactory" class="com.">
<property name="dataSource" value="datasource" > </property>
<property name="typeAliasePackage" value="" > </property>
</bean>
* 4、配置mapperScanner
* 管理mapper代理对象
* <bean class="">
</bean>
* resultType 必须是完全限定名
* 前面配置了,所以不用了