[今日课程大纲]
高级软件介绍(部分)
MySql数据库建库建表语句强调
命名规范强调
基于MVC开发模式完成单表查询和新增
Eclipse中项目默认发布路径
高级课程大纲介绍
框架是什么
MyBatis简介
MyBatis搭建流程
数据库连接池和JNDI复习
搭建流程详解(全局配置文件,resultType原理及AutoMapping等)
MyBatis三种查询方式
[知识点详解]
- 高级软件介绍
- JDK 7
- Eclipse mars2
- MySql
- Navicat
二.数据库SQL命令
1创建数据库并指定编码
Create database 数据库名 default character set utf8 |
- 创建表
Create table 表名( 列名 类型 约束 auto_increment comment ‘备注’, ); |
- Eclipse使用
- 创建项目
1.1 选择target runtime,否则出现新建jsp报错
1.2 如果忘记选择,右键项目--> build path --> configure path -->选项卡library --> 第四个add library --> server runtime
- Eclipse默认会自己下载所需tomcat最简单结构.
- 命名规范
- 项目名:没有要求,不起中文
- 包:公司域名倒写 com.bjsxt
- 数据访问层:dao, persist, mapper
- 实体:entity, model, bean,javabean, pojo
- 业务逻辑: service ,biz
- 控制器: controller, servlet,action,web
- 过滤器: filter
- 异常: exception
- 监听器:listener
- 注释:
10.1 类上和方法上使用文档注释 /** */
10.2 在方法里面使用/* */ 或 //
- 类: 大驼峰
- 方法,属性:小驼峰
- MVC开发模式
- M: Model 模型,实体类和业务和dao
- V: view 视图. JSP
- C:Controller 控制器,servlet
3.1 作用:视图和逻辑分离
- MVC适用场景:大型项目开发.
- 图示例
5.1 先设计数据库
5.2 先写实体类
5.3 持久层
5.4 业务逻辑
5.5 控制器
5.6 视图
- 高级课程大纲介绍
- 正课时间46天(9周零1天)
- 高级分为3部分:
2.1 第一部分:SSM框架.11天+5天项目
2.1.1 MyBatis: 数据访问层框架
2.1.2 Spring框架:IoC,AOP
2.1.3 SpringMVC框架:对Servlet封装
2.2 第二部分:分布式项目开发(Ego) 6天+14天+5天
2.3 第三部分:SSH框架 5天
- 框架是什么?
- 框架:软件的半成品.为解决问题制定的一套约束,在提供功能基础上进行扩充.
- 框架中一些不能被封装的代码(变量),需要使用框架者新建一个xml文件,在文件中添加变量内容.
2.1 需要建立特定位置和特定名称的配置文件.
2.2 需要使用xml解析技术和反射技术.
- 常用概念
3.1 类库:提供的类没有封装一定逻辑.
举例:类库就是名言警句,写作文时引入名言警句
3.2 框架:区别与类库,里面有一些约束.
举例:框架是填空题
- MyBatis简介
- Mybatis 开源免费框架.原名叫iBatis,2010在google code,2013年迁移到github
- 作用: 数据访问层框架.
底层是对JDBC的封装
- mybatis优点之一:
3.1 使用mybatis时不需要编写实现类,只需要写需要执行的sql命令
- 环境搭建
- 导入jar
- 在src下新建全局配置文件(编写JDBC四个变量)
2.1 没有名称和地址要求
2.2 在全局配置文件中引入DTD或schema
2.2.1 如果导入dtd后没有提示
Window--> preference --> XML --> XMl catalog --> add按钮
2.3 全局配置文件内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- default引用environment的id,当前所使用的环境 --> <environments default="default"> <!-- 声明可以使用的环境 --> <environment id="default"> <!-- 使用原生JDBC事务 --> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm"/> <property name="username" value="root"/> <property name="password" value="smallming"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/> </mappers> </configuration> |
- 新建以mapper结尾的包,在包下新建:实体类名+Mapper.xml
3.1 文件作用:编写需要执行的SQL命令
3.2 把xml文件理解成实现类.
3.3 xml文件内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namesapce:理解成实现类的全路径(包名+类名) --> <mapper namespace="a.b" > <!-- id:方法名 parameterType:定义参数类型 resultType:返回值类型.
如果方法返回值是list,在resultType中写List的泛型,因为mybatis 对jdbc封装,一行一行读取数据 --> <select id="selAll" resultType="com.bjsxt.pojo.Flower"> select * from flower </select> </mapper> |
- 测试结果(只有在单独使用mybatis时使用,最后ssm整合时下面代码不需要编写.)
InputStream is = Resources.getResourceAsStream("myabtis.xml"); //使用工厂设计模式 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); //生产SqlSession SqlSession session=factory.openSession();
List<Flower> list = session.selectList("a.b.selAll"); for (Flower flower : list) { System.out.println(flower.toString()); }
session.close(); |
- 环境搭建详解
- 全局配置文件中内容
1.1 <transactionManager/> type属性可取值
1.1.1 JDBC,事务管理使用JDBC原生事务管理方式
1.1.2 MANAGED 把事务管理转交给其他容器.原生JDBC事务setAutoMapping(false);
1.2 <dataSouce/>type属性
1.2.1 POOLED 使用数据库连接池
1.2.2 UNPOOLED 不实用数据库连接池,和直接使用JDBC一样
1.2.3 JNDI :java命名目录接口技术.
- 数据库连接池
- 在内存中开辟一块空间,存放多个数据库连接对象.
- JDBC Tomcat Pool,直接由tomcat产生数据库连接池.
- 图示
3.1 active状态:当前连接对象被应用程序使用中
3.2 Idle空闲状态:等待应用程序使用
- 使用数据库连接池的目的
4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率.
4.1.1 小型项目不适用数据库连接池.
- 实现JDBC tomcat Pool的步骤.
5.1 在web项目的META-INF中存放context.xml,在context.xml编写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/ssm" username="root" password="smallming" maxActive="50" maxIdle="20" name="test" auth="Container" maxWait="10000" type="javax.sql.DataSource" /> </Context> |
5.2 把项目发布到tomcat中,数据库连接池产生了
- 可以在java中使用jndi获取数据库连接池中对象
6.1 Context:上下文接口.context.xml文件对象类型
6.2 代码:
Context cxt = new InitialContext(); DataSource ds = (DataSource) cxt.lookup("java:comp/env/test"); Connection conn = ds.getConnection(); |
6.3 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改变成Idle
- 三种查询方式
- selectList() 返回值为List<resultType属性控制>
1.1 适用于查询结果都需要遍历的需求
List<Flower> list = session.selectList("a.b.selAll"); for (Flower flower : list) { System.out.println(flower.toString()); } |
- selectOne() 返回值Object,
2.1 适用于返回结果只是变量或一行数据时
int count = session.selectOne("a.b.selById"); System.out.println(count); |
- selectMap() 返回值Map
3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.
3.2 Map<key,resultType控制>
Map<Object, Object> map = session.selectMap("a.b.c", "name123"); System.out.println(map); |