面试:自我介绍
1、问好
2、我是谁,来应聘什么岗位
3、个人基本信息:年龄、学历、工作年限等
4、工作经历:前公司、岗位、开发过的项目
5、擅长技术
6、下一步规划(简单)、能够给公司贡献什么
7、结束语
课程内容:
MyBatis
Spring
Spring MVC
项目案例:Bootstrap
框架技术:
是一个应用程序的半成品
提供了可重用的公共结构
按一定规则组织的一系列组件
SSM:SpringMVC、Spring、Mybatis
SSH:Struts2、Spring、Hibernate
MyBatis:
MyBatis概念
持久化:程序数据在瞬时状态和持久状态间转换的过程
瞬时状态:内存(程序)
持久状态:文件(数据库)
ORM:对象关系映射
编写程序的时候,以面向对象的方式处理数据
保存数据的时候,以关系型数据库的方式存储
ORM解决方案(框架):功能
对象关系映射
增删改查操作
查询语言或API
事务、延迟加载以及其他优化功能
MyBatis:半自动化的ORM框架
半自动化:手动编写SQL语句封装在映射文件中
搭建环境:
1、添加相关jar
mybatis-3.5.1.jar
依赖的jar:lib\*.jar
jdbc驱动:mysql-connector-j-8.0.31.jar
2、创建配置文件
database.properties:数据库配置信息
log4j.properties:log4j(日志)配置文件
log4j.logger.com.t357.cvs.mapper=trace
mybatis-config.xml:MyBatis配置文件
对框架进行全局设置;让框架加载程序代码
properties:加载properties配置文件(database.properties)
settings:设置框架的全局属性
cacheEnabled
lazyLoadingEnabled
autoMappingBehavior
typeAliases:类型(实体类)别名
environments:运行环境(数据库环境)
<transactionManager type="JDBC" />:事务管理器
<dataSource type="POOLED">:数据源:连接池
mappers:映射文件
基本操作:
1、开发实体类:在配置文件中指定别名
建议属性使用包装器类型
2、定义Mapper接口:等价于DAO
增删改查方法
3、定义SQL映射文件:在配置文件中指定加载
namespace与Mapper接口完整名称一致
id与Mapper接口中的方法名称一致
4、运行:测试类、junit
读取MyBatis核心配置文件
创建SqlSessionFactory实例
创建SqlSession实例
创建Mapper实例
调用Mapper接口的方法:执行SQL映射文件中的SQL语句
核心类:工具类
SqlSessionFactoryBuilder:
加载配置文件,创建SqlSessionFactory,创建完毕(使用结束)自动销毁
SqlSessionFactory:生命周期与整个应用程序的生命周期相同、单例
SqlSession:非线程安全,不能共享;对应一次数据库会话,会话结束必须关闭
MyBatisUtil:工具类
保证SqlSessionFactory只创建一次
SQL映射文件:
mapper:根节点
namespace:与对应的Mapper接口的完整名称一致
insert、delete、update、select:增删改查
id:与对应的Mapper接口的方法名称一致
parameterType:参数类型
resultType:返回结果类型
resultMap:返回结果映射
传递参数:
parameterType:单个参数
基本类型:数值
对象类型:实体
Map类型:多个参数
注解:任意参数
@Param("realName")
@Param("roleId")
不使用parameterType和注解:不建议
参数名称自动命名为:param1、param2……
获取参数:
#{}:解析为?占位符
${}:直接获取值,拼接SQL
返回结果:
resultType:返回结果类型
SQL语句的列名和返回结果类的属性名一致
resultMap:返回结果映射
列名和属性名不一致
关联查询
resultMap:结果映射
id:标识、引用
type:类型(实体类)
id:映射主键属性
result:映射普通属性
association:映射多对一关联
collection:映射一对多关联
关联查询
多对一:association
多表连接查询SQL
两条SQL进行查询
一对多:collection
两条SQL进行查询
延迟加载:
<setting name="lazyLoadingEnabled" value="true"/>
自动映射:
<setting name="autoMappingBehavior" value="PARTIAL"/>
缓存
一级缓存:SqlSession范围内缓存、自动缓存
二级缓存:SqlSessionFactory范围内缓存(全局)、配置缓存
<setting name="cacheEnabled" value="true"/>
<cache eviction="FIFO" size="1000" flushInterval="6000" />
<select id="get" parameterType="int" resultType="SysUser" useCache="true">
动态SQL:
了解动态SQL
常用标签
if:where
foreach:
遍历List:in子查询
遍历Map:insert、update
if+set:update
分页查询:
limit #{begin},#{size}
调用存储过程:
JDBC:
CallableStatement
cs.setInt(1,roleId);
cs.registerOutParameter(2, Types.INTEGER);
cs.execute();
total = cs.getInt(2);
rs = cs.getResultSet();
MyBatis:
statementType="CALLABLE"
{call proc_find_user(#{id,mode=IN})}
{call proc_count_user(#{roleId, mode=IN, jdbcType=INTEGER},#{total, mode=OUT, jdbcType=INTEGER})}
自动生成代码:
添加mybatis-generator-core-1.4.0.jar
创建配置文件:mybatis-generator.xml
jdbcConnection:数据库连接
javaModelGenerator:实体类位置
sqlMapGenerator:映射文件位置
javaClientGenerator:Mapper接口位置
table:表、实体类名、Mapper接口方法
MyBatisGeneratorUtil执行生成代码
Spring
配置扩展:
优化:
配置数据源:优化性能
1、添加依赖:
commons-dbcp-1.4.jar
commons-pool-1.6.jar
2、创建database.properties
3、Spring核心配置文件配置数据源
引入database.properties文件
配置DBCP数据源
配置文件拆分:优化可读性、可维护性
1、核心配置文件(公共配置)
N、模块配置文件(Service、Controller)
核心配置文件导入模块配置文件、加载核心配置文件
<import resource="applicationContext-user.xml"/>
String path = "applicationContext.xml";
简化:
自动装配:
autowire="byType"
autowire="byName"
注解配置:
1、添加context命名空间
xmlns:context="http://www.springframework.org/schema/context"
2、开启组件扫描
<context:component-scan base-package="com.t357.cvs.service"/>
3、service添加注解(IOC、DI)
IOC:<bean id="sysUserService" class="cn.bdqn.service.impl.SysUserServiceImpl">
@Component
@Repository
@Service
@Controller
@Scope:
singleton:单例
prototype:原型
DI:<property name="sysUserMapper" ref="sysUserMapper"/>
@Resource:
1、byName
2、byType
@Autowired:
1、byType
2、@Qualifier:byName
SpringMVC:
理解MVC设计模式
将程序按照功能分为模型、视图、控制器
模型:JavaBean
处理业务逻辑并操作数据库
视图:JSP
输入输出、界面展示
控制器:Servlet(Controller)
控制请求处理流程
SpringMVC:Spring提供的实现了MVC设计模式的Web框架(模块)
搭建SpringMVC开发环境
1、添加相关jar
web、webmvc
2、创建配置文件springmvc-servlet.xml
添加mvc命名空间
组件扫描:扫描controller包
启用注解驱动:配置请求映射
视图解析器:前缀后缀
配置静态资源
3、配置web.xml
1、配置核心控制器:DispatcherServlet
加载springmvc-servlet.xml
2、配置监听器:ContextLoaderListener
加载applicationContext.xml
3、配置过滤器:CharacterEncodingFilter
解决中文乱码
掌握基于注解开发:MVC
开发模型(M):JavaBean
entity
mapper
service:注入mapper
开发视图(V):JSP
login.jsp
main.jsp
form标签:数据双向绑定
提交页面,将页面的数据自动封装到Controller类的处理方法的实体类中
显示页面,将Controller类的处理方法的实体类中的数据自动设置到页面
开发控制器(C):Controller
controller:注入service
@RequestMapping("/dologin"):配置请求映射
public String login(String account……):处理方法
返回值:
String:视图(名称、路径)
ModelAndView:数据和视图
Object:数据(JSON、ajax)
方法(自定义):对应一个请求处理
多个方法,处理多种请求
方法参数:
请求参数:自动接收、封装
简单数据类型:int、String……
复合数据类型:SysUser
Servlet API对象:
HttpServletRequest
HttpServletResponse
HttpSession
Model:模型(数据)、作用域等价于request
SpringMVC架构及处理请求流程
映射配置:
@RequestMapping("/dologin")
@RequestMapping("/view/{id}"):
@PathVariable("id") Integer userId
参数传递:
方法参数:
简单数据类型:int、String……
复合数据类型:SysUser
@RequestParam(defaultValue = "1")
返回数据:
作用域对象
Model对象、ModelAndView
文件上传:
1、添加Apache Commons FileUpload组件
commons-fileupload-1.2.2.jar、commons-io-2.4.jar
2、配置springmvc-servlet.xml
配置文件上传解析器
3、开发jsp页面:同S2
<form enctype="multipart/form-data" method="post" ……>
<input type="file" name="idPic" id="idPic"/>
4、开发Controller:
public String add(……,@RequestParam(value ="idPic", required = false) MultipartFile idPic)
//上传之前进行文件大小、格式等判断,文件重命名
idPic.transferTo(new File(directory, newFileName)); //文件上传
Ajax:
添加fastjson-1.2.13.jar
JSP:发出请求、动态改变页面内容
Controller:
1、使用out返回json,类似Servlet
public void findAllRoles (HttpServletResponse response)
out.print(json);
2、返回Object,SpringMVC自动转换为json
配置springmvc-servlet.xml
<mvc:message-converters> //自动转JSON
public @ResponseBody List<SysRole> findAllRoles ()
return roleList;