目录
一,三层架构:
1,什么是三层架构
为什么使用三层:
2,常用框架SSM
MyBatis执行流程图:
二,使用MyBatis框架
一),使用mybatis框架得基本步骤:
1,新建数据库表
2,新建maven项目
3,补全maven工程目录
4,修改pom.xml文件,添加mybatis依赖,添加mysql依赖
5,修改pom.xml文件,添加资源文件指定
6,在idea中添加数据可视化
7,配置jdbc.properties属性文件(配置数据库连接得基本信息)
8,添加SqlMapConfig.xml,mybatis的核心文件
9,创建实体类,用来封装数据
数据库连接池的引入:
10,添加数据库对数据表操作的StuMapper.xml文件
11,创建测试类,进行功能测试
mapper数据库查询语句映射Java的数据类型:
使用Mybatis对数据库进行增删改查
在项目开发中遵循的一种开发模式,分为三层:
1),界面层:负责接收客户端的数据,将数据传递给业务逻辑层处理,返回结果给客户端
2),业务逻辑层:整个项目的逻辑处理层,接收界面层的数据,传递给数据访问层,接受数据访问层的结构,返回数据结果给界面层
3),数据访问层:专门用来进行数据库的增删改查操作,向上为业务逻辑提供数据
界面层<————>业务逻辑层<————>数据访问层,各层之间不可以跨月访问。
1,结构清晰,耦合度低,各层分工明确
2,可维护性搞,课扩展性高
3,有利于标准化
4,开发人员只需要注重一层功能结构的实现
5,有利于各层逻辑结构的实现。
Spring:Spring整合了其他框架,核心是IOC和AOP,由20多个模块组成
SpringMVC:Spring中的一员,专门用于优化控制器(Servlet)。提供了极为简单的数据提交,数据携带和数页面跳转。
MyBatis:持久化层的一个框架,用于优化数据访问,专注SQL语句
SSM是一个半成品软件,将公共的部分封装,重复问题解决,简化程序开发,他是可扩展,可复用的。
添加框架的步骤:
1,添加依赖
2,添加配置文件
SHOW DATABASES;
USE ssm;
CREATE TABLE if not EXISTS stu(
id INT auto_increment PRIMARY KEY,
name VARCHAR(255) DEFAULT null,
email VARCHAR(255) DEFAULT null,
age int DEFAULT NULL
);
INSERT INTO stu(name,email,age) VALUES('张三','[email protected]' ,18);
INSERT INTO stu(name,email,age) VALUES('李四','[email protected]' ,28);
INSERT INTO stu(name,email,age) VALUES('王五','[email protected]' ,38);
SELECT * FROM stu;
org.mybatis
mybatis
3.5.6
mysql
mysql-connector-java
5.1.49
src/main/java
**/*.xml
**/*.properties
src/main/resources
**/*.xml
**/*.properties
SqlMapConfig.xml:
http://t.csdn.cn/Bfaw8
创建StuMapper.xml,文件头代码:
StuMapper.xml创建完毕,需要去SqlMapConfig.xml中去注册mapper,否则无法使用该StuMapper
按照这个流程书写测试代码:
package com.ssm;
import com.pojo.Stu;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyTest {
@Test
public void Test() throws IOException {
//1,使用文件流,读取核心配置文件SqlMapConfig.xml
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建sqlSessionFactory,bean工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession
SqlSession sqlSession = factory.openSession();
//4,执行sql
List stu = sqlSession.selectList("yyk.getAll");
stu.forEach(stu1 -> {
System.out.println(stu1);
});
//5,释放资源
sqlSession.close();
}
}
insert into stu(name,email,age) values (#{name},#{email},#{age})
delete from stu where id = #{id};
update stu set name = #{name},email = #{email},age = #{age}
where id = #{id}
package com.ssm;
import com.pojo.Stu;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyTest {
@Test
public void TestAll() throws IOException {
//1,使用文件流,读取核心配置文件SqlMapConfig.xml
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建sqlSessionFactory,bean工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession
SqlSession sqlSession = factory.openSession();
//4,执行sql;执行mapper的yyk下的sql getAll
List stu = sqlSession.selectList("yyk.getAll");
stu.forEach(stu1 -> {
System.out.println(stu1);
});
//5,释放资源
sqlSession.close();
}
@Test
public void testByID() throws IOException {
//1,读取和兴配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建SessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,取出sqlsession对象
SqlSession sqlSession = factory.openSession();
//4,按主键查询
Stu stu = sqlSession.selectOne("yyk.getById",1);
System.out.println(stu);
//5,关闭sqlSession
sqlSession.close();
}
@Test
public void testByName() throws IOException {
//1,读取SqlMapConfig配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession对象
SqlSession sqlSession = factory.openSession();
//4,执行sql语句
List list = sqlSession.selectList("yyk.getByName","李");
list.forEach(stu -> System.out.println(stu));
System.out.println(list.size());
//5,释放资源
sqlSession.close();
}
@Test
public void testInsert() throws IOException{
//1,读取SqlMapConfig配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession对象
SqlSession sqlSession = factory.openSession();
//4,执行sql语句
int num = sqlSession.insert("yyk.insert",new Stu("钱六","[email protected]",20));
//在所有的增删改中,需要手工提交事务
sqlSession.commit();
//5,释放资源
sqlSession.close();
}
@Test
public void testDelete() throws IOException{
//1,读取SqlMapConfig配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession对象
SqlSession sqlSession = factory.openSession();
//4,执行sql语句
int num = sqlSession.delete("yyk.delete",1);
System.out.println(num);
//在所有的增删改中,需要手工提交事务
sqlSession.commit();
//5,释放资源
sqlSession.close();
}
@Test
public void testUpdate() throws IOException{
//1,读取SqlMapConfig配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2,创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3,获取sqlSession对象
SqlSession sqlSession = factory.openSession();
//4,执行sql语句
int num = sqlSession.update("yyk.update",new Stu(3,"tt","[email protected]",100));
System.out.println(num);
//在所有的增删改中,需要手工提交事务
sqlSession.commit();
//5,释放资源
sqlSession.close();
}
}