一, SQl复习
a,数据库SQL命令
- 创建数据库并指定编码
Create database 数据库名 default character set utf8
create database ssm default character set utf8; use ssm; create table if not exists flower( id int(10) primary key auto_increment comment '编号', name varchar(30) not null comment '名称', price float not null comment '价格', production varchar(30) not null comment '原产地' );
- 创建表
create table 表名(
列名 类型 约束 auto_increment comment ‘备注’,
);
insert into flower values(default ,'矮牵牛',2.5,'南美阿根廷'); insert into flower values(default ,'百日草',5.0,'墨西哥'); insert into flower values(default ,'半枝莲',4.3,'巴西'); select * from flower;
运行结果:
二,eclipse 的使用
1,创建项目
1.1 选择target runtime,否则出现新建jsp报错
1.2 如果忘记选择,右键项目-->build path --->configure path --->选项卡library --->第四个 add library --->server runtime
2.eclipse 默认会自己下载所需Tomcat最简单结构
三.命名规范
1. 项目名:没有要求,不起中文就行
2. 包:公司域名倒写 com.bjut
3. 数据库访问层(持久层) :dao,persist,mapper
4,实体:entity,model,bean,Javabean,pojo(普通java类)
5,业务逻辑:service,biz
6,控制器层:controller,servlet,action,web
7,过滤器:filter
8,异常包:exception
9,监听器:listener
10,注释:
10.1 类个和方法上使用文档注释 /** */
10.2 在方法里面使用 /* */ 或 //
11,类:大驼峰 (FlowerNameBeauty)
12,方法和属性:小驼峰(flowerNameBeauty)
四.MVC(又称为JSP model 2)开发模式
1. M: Model 模型,实体类和业务和dao
2. V:view 视图。 JSP
3. C:controller 控制器, servlet
3.1 作用:视图和逻辑分离
4. MVC适用场景:大型项目开发。
5. 图示例
5.1 先设计数据库
5.2 先写实体类
5.3 持久层
5.4 业务逻辑
5.5 控制器
5.6 视图
五.框架介绍
1. 框架:软件的半成品。为解决问题制定一套约束,在提供功能基础上进行扩充。
2. 框架中一些不能被封装的代码(变量),需要使用框架者新建一个xml文件,在文件中添加变量内容。
2.1 需要建立特定位置和特定名称的配置文件。
2.2 需要使用xml解析技术(固定的类)和反射技术(类和类中属性都不固定)
3. 常用概念
3.1类库:提供的类没有封装一定逻辑。
Ex:类库好比名言警句,写作文时引用它
3.2 框架:区别于类库,里面有一些约束。
Ex: 框架是填空题
六.Mybatis 简介
1. Mybatis 开源免费框架。原名iBatis,2010在Google code,2013 年迁移到github
2. 作用:数据访问层框架
2.1 底层是对JDBC的封装
3. Mybatis优点之一:
3.1 使用mybatis时不需要编写实现类,只需要写需要执行的sql命令
七. 环境搭建
2. 编写src下新建全局配置文件(编写JDBC四个变量)
2.1 没有名称和地址要求
2.2 在全局配置文件中引入dtd或schema
如果导入dtd后没有提示
Window-->preference-->XML-->XML catalog -->add按钮
3. 新建以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"> <!-- namespace:理解成实现类的全路径(包名+类名) -->> <mapper namespace="a.b"> <!-- id:方法名 parameterType:定义参数类型 resultType:返回值类型 如果方法返回值是list,在resultType中写List的泛型,因为mybatis 对jdbc封装,一行一行读取数据 --> <select id="selAll" resultType="Flower"> select *from flower </select> </mapper>
4. 测试结果,只有在单独使用mybatis时使用,最后ssm整合时下面代码不需要编写
package com.bjut.test; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Test { public static void main(String[] args) { InputStream is = Resources.getResourceAsStream("mybatis.xml"); //使用工厂设计模式(生产什么,就叫什么Factory) 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.1 <transaction/>type属性可取值
1.1.1 JDBC 事务管理使用JDBC原生事务管理方式
1.1.2 MANAGED 把事物管理转交给其他容器,原生JDBC事务setAutoMapping(false);
1.2 <dataSource/>type属性
1.2.1 POOLED 使用数据库连接池
1.2.2 UNPOOLED 不使用数据库连接池,和直接使用JDBC一样
1.2.3 JNDI Java命名目录借口接口技术
九.数据库连接池
1. 在内存中开辟一块空间,其存放多个数据库连接对象
2. JDBC Tomcat Pool,直接由Tomcat 产生数据库连接池
3. Active 状态 :当前连接对象被应用程序使用中
Idle空闲状态:等待应用程序使用
4. 使用数据库连接池的目的
4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率
4.1.1 小型项目不适用数据库连接池
5. 实现JDBC Tomcat Pool 的步骤
5.1 在web项目的META-INF中存放contex.xml(tomcat中有,直接复制过去) ,在contex.xml编写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?> <context> <Resource driverClassName = "com.mysql.jdbc.Driver" url = "jdbc:mysql://localhost:3306/ssm" usename="root" password="1234" maxActive="50" minIdle="20" name="test" auth="Container" maxWait="10000" type="javax.sql.DataSource" /> /<context>
5.2 把项目发布到Tomcat中,数据库连接池就产生了
6. 可以再Java中使用jndi获取数据库连接池对象
6.1 Context:上下文接口,context。xml 文件对象类型
6.2 代码:
Contex cxt = new InitialContext(); DataSource ds = (DataSource) cxt.lookup("java:comp/env/test"); Connection conn = ds.getConnection();
6.3 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改成idle