ssm总结

静态Web站点:每次访问返回页面相同,客户端与服务器端不能交互

动态Web应用:无数据库

每次请求客户端可以输入一些参数,服务器接收后,返回不同的页面。

动态Web应用:有数据库

多数Web应用都使用数据库存储数据

HTTP协议

1.协议部分

该URL的协议部分为http:,表示网页用的是HTTP协议,后面的//为分隔符

2.域名部分

域名是www.fishbay.cn,发送请求时,需要向DNS服务器解析IP。如果为了优化请求,可以直接用IP作为域名部分使用

3.端口部分

域名后面的80表示端口,和域名之间用:分隔,端口不是一个URL的必须的部分。如果端口是80,也可以省略不写

HTTP请求方法

GET方法:不提交大量数据,无敏感、保密数据时使用

超级链接访问,默认是GET方法

form提交,不指定method,默认为GET方法

form提交,制定method=“GET”,很少用这种方式

POST方法:需要提交敏感、保密数据,或数据量较大

form提交,指定method=“POST”

MyBatis特性

1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

3) MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录

4) MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

 MyBatis执行流程

1、读取 Mybatis的全局配置文件 mybatis-config.xml

2、创建 SqlSessionFactory会话工厂

3、创建 SqlSession会话

4、通过SqlSession对话得到代理对象

5、调用对象的增删改查方法

6、提交事务

7、关闭会话

增:当我们插入一条记录,并需要将插入成功的记录信息传递给后面的操作时,则需要考虑返回插入成功记录的主键

删:对接口 测试方法

改:测试类中添加测试方法

查:1)增加无参构造器

  1. 删除StudentMapper.xml中查询的数据库字段sid,
  2. 保证mapper.xml中查询的数据库字段属性的类型要和有参构造器的字段类型匹配;
  3. 查询字段的个数要和有参构造器个数一样

ThreadLocal 的作用:解决多线程的数据安全问题。

sqlSession.commit();提交事务

sqlSession.rollback();事务回滚

自动映射

NONE - 禁用自动映射。仅对手动映射的属性进行映射。(不实用)

PARTIAL - 对除在内部定义了嵌套结果映射(也就是连接的属性)以外的属性进行映射

FULL - 自动映射所有属性。(有风险、慎用)

默认值是 PARTIAL

子查询——association嵌套 Select 查询:通过执行另外一个 SQL 映射语句来加载期望的复杂类型

关联(association)元素处理“有一个”对象的情况,有两种使用方式:

嵌套 Select 查询:通过执行另外一个 SQL 映射语句来加载期望的复杂类型。

可能出现”N+1”问题

嵌套结果映射:使用嵌套的结果映射来处理连接结果的重复子集。

结果映射作为子元素嵌套在内

仅能使用一次

外部结果映射元素来映射关联

可重复使用

MyBatis 可以推断 javaType 属性,因此并不需要填写。所以很多时候你可以简略

多对一

使用select  指定字段的形式,当前需要哪些字段,则查询哪些字段

多对多

Mapper.xml文件中也没有中间表的对应标签描述,是在查询语句中使用中间表来进行关联

映射处理

动态 SQL 是 MyBatis 的强大特性之一。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性

If:#{}中的参数名需要写入参对象中的属性名

 minAge 、maxAge设置属性为基本数据类型int

Where:只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。

而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除

Trim:用于去掉或添加标签中的内容

choose、when、 otherwise相当于if...else if..else

foreach 元素的功能非常强大

使用批量更新,需要设置mysql支持批量操作(默认不支持)

sql片段,可以记录一段公共sql片段,在使用的地方通过include标签进行引入

每个SqlSession单独分配的缓存内存

查询sql语句相同,第一次从数据库获取数据,第二次从缓存中获取数据

查询sql语句相同,第一次从数据库获取数据,第二次仍从数据库中获取数据

第一次从数据库获取数据后清空sqlsession缓存,则一级缓存失效,第二次仍从数据库中查询数据。

二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取

延迟加载——如果在MyBatis开启了延迟加载,在执行了子查询(至少查询两次及以上)时,默认只执行第一次查询,当用到子查询的查询结果时,才会触发子查询的执行;如果无需使用子查询结果,则子查询不会执行

正向工程:

先创建Java实体类,由框架负责根据实体类生成数据库表。

逆向工程:

先创建数据库表,由框架负责根据数据库表,反向生成如下资源:

Java实体类

Mapper接口

Mapper映射文件

逆向工程缺点:

       生成的代码模板化--生成一大堆没有用的代码

       生成的代码的格式规范不合法

       生成很多的无用的代码或者方法

       生成字段的类型有问题

       生成的代码只能进行单表操作--无法进行连表查询

逆向工程的优点:

      快速搭建model层的项目结构

      快速生成表格对应的实体类,mapper接口,mapper文件

       生成标准的sql片段和sql语句的模板

使用JSTL标签循环遍历从request作用域中拿出的List集合bookInfos,并用EL表达式将值输出到前端页面

limit N : 返回 N 条记录,相当于limit 0,5

offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用

limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录

currentPage(当前页),pageSize(每页记录数)

totalPage(总页数)

pageList(当前页面封装的数据集合)

导入jar包

在mybatis的主配置文件mybatis-config.xml中通过plugins标签进行配置

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值