栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用MyBatis实现数据库的增删改查的步骤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用MyBatis实现数据库的增删改查的步骤

1.什么是三层架构?

在项目开发中,遵循的形式模式分为三种:
1.界面层:用来接收客户端的输入,调用业务逻辑层进行功能处理,返回结果给客户端,(过去的servlet就是界面层的功能)
2.业务逻辑层:用来进行整个项目的业务逻辑处理,向上为界面层提供处理结果,向下问数据层要数据
3.数据访问层:专门进行数据库的增删改查操作。想上为业务逻辑层提供数据
各层之间的调用顺序是固定的,不能跨层访问
**界面层<——>业务逻辑层<——>数据访问层

2.生活中的三层架构

3.常用的框架SSM.

Spring:它是整合其它框架的框架.它的核心是IOC和AOP.它由20多个模块构成.在很多领域都提供了很好的解决方案.是一个大佬级别的存在.
SpringMVC:它是Spring家族的一员.专门用来优化控制器(Servlet)的.提供了极简单数据提交,数据携带,页面跳转等功能.
MyBatis:是持久化层的一个框架.用来进行数据库访问的优化.专注于sql语句.极大的简化了JDBC的访问.

4.什么是框架?

它是一个半成品软件.将所有的公共的,重复的功能解决掉,帮助程序快速高效的进行开发.它是可复用,可扩展的.

5.什么是MyBatis框架?

MyBatis 本是 apache 的一个开源项目iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github,最新版本是 MyBatis 3.5.7 ,其发布时间是 2021 年 4月 7日。
MyBatis完成数据访问层的优化.它专注于sql语句.简化了过去JDBC繁琐的访问机制.

6.添加框架的步骤

1)添加依赖
2)添加配置文件

具体步骤:

1.新建库建表
2.新建maven项目,选quickstart模板
3.修改目录,添加缺失的目录,修改目录属性
4.修改pom.xml文件,添加MyBatis的依赖,添加mysql的依赖

  
    
      org.mybatis
      mybatis
      3.5.6
    
 
    
      mysql
      mysql-connector-java
      5.1.32
    

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

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

6.在idea中添加数据库的可视化
**注意:**若MySQL的jar包是8版本以上的

需要修改serverTimezone=Asia/Shanghai

7.添加jdbc.properties属性文件(数据库的配置)

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

8.添加SqlMapConfig.xml文件,MyBatis的核心配置文件




    
    
    
    
        
    
    
    
        

        
        
    
    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    
    
    
        
    

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

package com.xin.entity;

public class Student {
    private Integer id;
    private String name;
    private String email;
    private Integer age;

    public Student() {
    }

    public Student(String name, String email, Integer age) {
        this.name = name;
        this.email = email;
        this.age = age;
    }

    public Student(Integer id, String name, String email, Integer age) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                " + id +
                ", name='" + name + ''' +
                ", email='" + email + ''' +
                ", age=" + age +
                '}';
    }
}

10.添加完成学生表的增删改查的功能的StudentMapper.xml文件





    
    
        select id,name,email,age
        from student
    
    
    
        select id,name,email,age
        from student
        where name like '%${name}%'
    
    
    
        insert into student(name,email,age) values(#{name},#{email},#{age})
    
    
   
       delete from student where id=#{id}
   
    
    
        update student set name=#{name},email=#{email},age=#{age}
        where id=#{id}
    

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

package com.xin.test;

import com.xin.entity.Student;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyTest {
    SqlSession sqlSession;
    @Before   //在所有的@Test方法执行前先执行这段代码
    public void openSession() throws IOException {
        //使用文件流读取核心配置文件SqlMapConfig.xml
        InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory工厂对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
        //取出SqlSession对象
        sqlSession=factory.openSession();
    }
    @After
    public void closeSqlSession() {
        //关闭SqlSession
        sqlSession.close();
    }
    
    @Test
    public void testGetAll() throws IOException {
        
        //完成查询操作
        List list=sqlSession.selectList("zar.getAll");
        list.forEach(student -> System.out.println(student));
        
    }

    
    @Test
    public void testById() throws IOException {
        
        //按主键查学生
        Student student=sqlSession.selectOne("zar.getById",1);
        System.out.println(student);
       
    }

    
    @Test
    public void testGetByName() throws IOException {
       
        //进行模糊查询
        List list=sqlSession.selectList("zar.getByName","李");
        list.forEach(student-> System.out.println(student));
        
    }

    
    @Test
    public void testInsert() throws IOException {
          
          int num=sqlSession.insert("zar.insert",new Student("梨花","1111@qq.com",18));
          System.out.println(num);
          //切记切记切记:在所有的增删改后必须手动提交事务!!!设置手动提交
          sqlSession.commit();
          

    }
    
    @Test
    public void testDelete() throws IOException {
        
        int num=sqlSession.delete("zar.delete",5);
        System.out.println(num);
        sqlSession.commit();
        sqlSession.close();
    }
    
    @Test
    public void testUpdate() throws IOException {
        
        int num=sqlSession.update("zar.update",new Student(3,"李名","3333@qq.com",17));
        System.out.println(num);
        sqlSession.commit();
       
    }
}

7.MyBatis对象分析 1.Resources类
 就是解析SqlMapConfig.xml文件,创建出相应的对象
//使用文件流读取核心配置文件SqlMapConfig.xml
 InputStream in=Resources.getResourceAsStream("SqlMapConfig.xml");
2.SqlSessionFactory接口

DefaultSqlSessionFactory是实现类

 SqlSessionFactory是MyBatis中的一个重要的对象,它是用来创建SqlSession对象的,而SQLSession是用来操作数据库的。
 SqlSessionFactory对象可以通过SqlSessionFactoryBuilder来获得,
 而SqlSessionFactoryBuilder则可以从XML配置文件或预先定制的Configuration实例构建出SqlSessionFactory的实例。
 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的,而 SqlSessionFactory 唯一的作用就是生产 MyBatis 的核心接口对象 SqlSession ,所以它的责任是唯一的。
//创建SqlSessionFactory工厂对象
 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
3.SqlSession 接口

DefaultSqlSession实现类

默认的 openSession()方法没有参数,它会创建有如下特性的 SqlSession:
1.会开启一个事务(也就是不自动提交)。
2.将从由当前环境配置的 DataSource 实例中获取 Connection 对象。事务隔离级别将会使用驱动或数据源的默认设置。 
3.预处理语句不会被复用,也不会批量处理更新。
//取出SqlSession对象
sqlSession=factory.openSession();
8.为实体类注册别名

        

        
        
    
9.设置日志输出

    
        
    

在控制台输出如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号