MyBatis浅入:三层框架和初步学习MyBatis

目录

一,三层架构:

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,什么是三层架构

在项目开发中遵循的一种开发模式,分为三层:

1),界面层:负责接收客户端的数据,将数据传递给业务逻辑层处理,返回结果给客户端

2),业务逻辑层:整个项目的逻辑处理层,接收界面层的数据,传递给数据访问层,接受数据访问层的结构,返回数据结果给界面层

3),数据访问层:专门用来进行数据库的增删改查操作,向上为业务逻辑提供数据

界面层<————>业务逻辑层<————>数据访问层,各层之间不可以跨月访问。

为什么使用三层:

1,结构清晰,耦合度低,各层分工明确

2,可维护性搞,课扩展性高

3,有利于标准化

4,开发人员只需要注重一层功能结构的实现

5,有利于各层逻辑结构的实现。

2,常用框架SSM

Spring:Spring整合了其他框架,核心是IOC和AOP,由20多个模块组成

SpringMVC:Spring中的一员,专门用于优化控制器(Servlet)。提供了极为简单的数据提交,数据携带和数页面跳转。

MyBatis:持久化层的一个框架,用于优化数据访问,专注SQL语句

SSM是一个半成品软件,将公共的部分封装,重复问题解决,简化程序开发,他是可扩展,可复用的。

MyBatis执行流程图:

MyBatis浅入:三层框架和初步学习MyBatis_第1张图片

添加框架的步骤:

1,添加依赖 

2,添加配置文件

二,使用MyBatis框架

一),使用mybatis框架得基本步骤:

1,新建数据库表

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;

2,新建maven项目

3,补全maven工程目录

4,修改pom.xml文件,添加mybatis依赖,添加mysql依赖


    
      org.mybatis
      mybatis
      3.5.6
    

    
    
      mysql
      mysql-connector-java
      5.1.49
    

5,修改pom.xml文件,添加资源文件指定

      
        
            
            
                src/main/java
                
                    **/*.xml
                    **/*.properties
                
            
            
            
                src/main/resources
                
                    **/*.xml
                    **/*.properties
                
            
        

6,在idea中添加数据可视化

MyBatis浅入:三层框架和初步学习MyBatis_第2张图片

 MyBatis浅入:三层框架和初步学习MyBatis_第3张图片

MyBatis浅入:三层框架和初步学习MyBatis_第4张图片  

7,配置jdbc.properties属性文件(配置数据库连接得基本信息)

MyBatis浅入:三层框架和初步学习MyBatis_第5张图片

8,添加SqlMapConfig.xml,mybatis的核心文件

MyBatis浅入:三层框架和初步学习MyBatis_第6张图片

MyBatis浅入:三层框架和初步学习MyBatis_第7张图片

MyBatis浅入:三层框架和初步学习MyBatis_第8张图片

 

MyBatis浅入:三层框架和初步学习MyBatis_第9张图片

  SqlMapConfig.xml:




    

    
    
    

    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    

    
    
        
        
        
    


9,创建实体类,用来封装数据

MyBatis浅入:三层框架和初步学习MyBatis_第10张图片

数据库连接池的引入:

http://t.csdn.cn/Bfaw8

10,添加数据库对数据表操作的StuMapper.xml文件

创建StuMapper.xml,文件头代码:




  






    
    
    

StuMapper.xml创建完毕,需要去SqlMapConfig.xml中去注册mapper,否则无法使用该StuMapper

11,创建测试类,进行功能测试

按照这个流程书写测试代码:

MyBatis浅入:三层框架和初步学习MyBatis_第11张图片

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();
    }
}

 MyBatis浅入:三层框架和初步学习MyBatis_第12张图片

mapper数据库查询语句映射Java的数据类型:

MyBatis浅入:三层框架和初步学习MyBatis_第13张图片

MyBatis浅入:三层框架和初步学习MyBatis_第14张图片 

使用Mybatis对数据库进行增删改查






    
    

    
    
    
    
    
    
    
    
        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();
    }
}

你可能感兴趣的:(spring,mybatis,java,mysql)