续 前面一篇
jar的统一管理
<properties>
<!--自定义标签-->
<!--对junitjar包进行统一管理-->
<junit-version>4.13</junit-version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
</dependencies>
maven功能---项目结构设计
1、项目结构--项目有哪些组成部分,这些部分之间存在什么关系
2、使用maven实现项目结构设计;简而言之就是通过maven可以帮助我们实现项目的组成划分,可以实现组成各个成员之间关系的设置
3、如何划分组成,可以设置那些关系?
1)继承关系:项目有父项目和子项目组成,项目和项目关系存在父子关系,子和子之间是并列关系;
继承关系特点:对于父项目来说,不知道
2)聚合关系:项目由多层多个模块和一个聚合项目组成,聚合项目和模块项目之间存在父子关系,模块项目和模块项目之间是并列关系
框架部分----ssm部分
一、框架
1、简单来说,框架就是一种半成品的程序,开发者可以在此基础上实现在开发。框架可以不断的更新维护,便于项目再开发
2.有哪些常用的框架
1)持久层框架:mybatis、dbutils、spring-jdbc、hibernate
2)表现层的框架:springmvc、struts2
3)全栈性质的框架:(可以在所有层可用)spring
3、分层思想、概念,目的是降低耦合、结构清晰、实现和维护相对更简单;分工协作
1)mvc 是一种分层设计思想,把项目中某些内容分成M、V、C
2)M-Model,模型层,包含:实体类层,实现数据的分装和传输
v-view,视图层,包含:视图界面(jsp、HTML、Excel、Word),实现信息展示以及操作者交互
c-controller,控制层,包含:servlet,实现接收和处理请求,做出响应
3)三层架构
A、适合于所有语言、适用于所有的项目形式;
B、表现层,用于实现数据的展示和操作者交互
C、业务逻辑层、用于实现项目的业务逻辑
D、数据访问层、用于实现数据的操作,和数据库交互
二、mybatis框架
1、是什么?
是持久层框架、和数据库交互、实现CRUD、封装了JDBC、参数自动传递、结果自动封装、由开发者实现SQL编写,mybatis是由Apache管理的开源项目,目前托管在GitHub。由于SQL语句需要开发者编写,所以mybatis又称为半ORM框架。
2.ORM----Object Relational Mapping 对象关系映射,是指数据库表和实体类对应,表中兹独暗河实体类属性对应,表中字段类型和实体类型对应
3.优点
1)减少代码量
2)实现软编码,通过xml配置方式
3)提高效率,比如减少连接对象的操作
4)还可以实现注解方式的操作
5)简单易学
4.mybatis 官网
http://mybatis.org/mybatis-3
5.mybatis入门案例
1)比如需求实现添加操作
2)准备
A、准备数据库和表
CREATE DATABASE mybatis CHARSET utf8;
USE mybatis;
CREATE TABLE t_user(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(30),
upwd VARCHAR(30)
);
B、搭建项目环境
创建项目---java性质maven项目,添加依赖
创建实体类
C、准备mybatis相关配置文件:核心配置文件和映射文件
核心配置文件 ----- 名称任意、保存位置在类路径下,项目一般只有一个
映射文件---名称任意(同城表示关联)、保存在类路径下(可以在其他任意位置),项目中可能会有多个
D、准备持久层
E、测试
//测试添加操作 -- 相当于service层
@Test
public void testSave() throws Exception{
//加载配置文件 -- 加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//创建工厂 -- 构造者模式
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//工厂模式
SqlSessionFactory factory = builder.build(is);
//创建会话 -- 数据库和框架
SqlSession sqlSession = factory.openSession();
//代理模式
//持久层对象 -- 让框架帮助我们创建实现类、然后创建实现类对象 -- 代理对象 -- 代替自定义的实现类以及对象的
//接口引用指向实现类对象 接口多态
UserDao userDao = sqlSession.getMapper(UserDao.class);
//对象调方法实现功能
//准备数据
User user = new User();
user.setUname("张飞");
user.setUpwd("123");
userDao.insert(user);
//提交
sqlSession.commit();
//释放资源
sqlSession.close();
}
6.CRUD
1)需求是查询操作 -- 单一查询、集合查询
实现主键查询
实现查询所有数据
2)修改操作 -- 主键修改
3)删除操作 -- 主键删除
三、mybatis的执行原理 -- 图示 -- 重点
四、在mybatis中有两种符号
1、#{} 、${}
2.区别
1)作用上的区别:#{}是占位符 ;${}是字符串拼接符
2)预编译上的区别:#{}在预编译时候会被转回?${}在预编译实现字符串拼接
3)安全上区别:#{}防止SQL注入,相对更加安全;${}不能防止SQL注入
五、parameterType属性的相关介绍
1、何时使用
有参数的时候
2、可以缺省配置(设置一般类型时、或者添加注解时)
3、可以设置那些属性值(不缺省配置情况下)
1)一般类型(八个包装类、String 、Date)
2)实体类型
3)Map类型
4)复合实体类型