资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

Java数据库操作——从JDBC到Mybatis

Java 更新时间: 发布时间: 计算机考试归档 最新发布

Java数据库操作——从JDBC到Mybatis

文章目录
  • 一、JDBC访问数据库
  • 二、mybatis连接数据库
    • 1. mybatis特性:
    • 2. MyBatis工作原理
    • 3. Spring 集成Mybatis(IDEA)
  • 三、总结

一、JDBC访问数据库
  • Java连接数据库之前已经说过,通过JDBC查询数据库数据,一般需要以下七个步骤:
    (1) 加载JDBC驱动
    (2) 建立并获取数据库连接
    (3) 创建 JDBC Statements 对象
    (4) 设置SQL语句的传入参数
    (5) 执行SQL语句并获得查询结果
    (6) 对查询结果进行转换处理并将处理结果返回
    (7) 释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)

  • 存在的问题

1.数据库连接频繁的开启和关闭本身就造成了资源的浪费,影响系统的性能。
2.Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

  • 解决方法

1.数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题。通过连接池就可以反复利用已经建立的连接去访问数据库了。减少连接的开启和关闭的时间
2.我们可以考虑不把SQL语句写到Java代码中,而是将这些SQL语句统一集中放到配置文件或者数据库里面(以key-value的格式存放)。然后
通过SQL语句的key值去获取对应的SQL语句。

二、mybatis连接数据库 1. mybatis特性:

(1) 使用连接池对连接进行管理
(2) SQL和代码分离,集中管理(mapper.xml)
(3) 参数映射和动态SQL
(4) 结果集映射
(5) 缓存管理
(6) 重复SQL提取
(7) 插件机制

2. MyBatis工作原理

(1) 读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。
(2) 加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
(3) 构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。
(4) 创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。
(5) Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。
(6) MappedStatement 对象:在 Executor 接口的执行方法中有一个MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。
(7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。
(8) 输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

3. Spring 集成Mybatis(IDEA)
  • 新建项目,选择spring initializr,initializr service URL使用default就行
  • 项目元数据界面的选择,其实选择默认的,不过我Java Version改为了8,Artifa 改为了mybatis_demo,注意项目名不能大小写混杂,然后点next就行了
  • 选择依赖,web里面要把spring web选上,然后在SQL里面把Mybatis framework、MySQL Driver、JDBC API选上,最后可以在旁边的selected Dependence里查看自己选择的项,点击next之后点击finish就完成项目建立了。
  • 打开查看pom.xml文件,可以看到刚刚我们选择的依赖已经自动添加到我们的文件中了
  • 修改application.properties文件,application.properties是项目自带的配置文件,也可以建立其他的配置文件,可以在文中添加端口、数据源、mydatis等相关数据
  • 建立项目文件User.Java
package com.example.mybatis_demo.user;

public class User {
    private int userid;
    private String username;
    private String password;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "userid=" + userid +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}
  • 新建UserMapper.Java
package com.example.mybatis_demo.mapper;

import com.example.mybatis_demo.user.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    public List findAllUser();
    public List findUserByUserId(int userid);
}
  • 新建UserService.Java
package com.example.mybatis_demo.service;

import com.example.mybatis_demo.mapper.UserMapper;
import com.example.mybatis_demo.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired(required=false)
    public UserMapper userMapper;

    public List findAllUser(){
        return userMapper.findAllUser();
    }

    public List findUserByUserId(int userid){
        return userMapper.findUserByUserId(userid);
    }
}
  • 新建UserController.Java
package com.example.mybatis_demo.controller;

import com.example.mybatis_demo.service.UserService;
import com.example.mybatis_demo.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/getAllUser")
    public List findAll(){
        return userService.findAllUser();
    }

    @RequestMapping("/getUserByUserID/{userid}")
    public List findUserByUserId(@PathVariable int userid){
        return userService.findUserByUserId(userid);
    }
}
  • 建立mapper文件,在里面建立UserMapper.xml,这个xml文件就是映射文件,sql语句就是在这里面写的,注意具体包名位置(namespace)与刚刚建立的usemapper类要对应。



    
        
        
        
    

    
        select * from user where userid=#{userid};
    

  • MySQL方面,首先是创建表格,结构如下,表名为user
  • 在浏览器中输入http://localhost:8080/user/getAllUser就可以看到查询结果,查询的语句是在映射文件里的,而路径由来是UserController.Java里确定的,查询结果如下图。
三、总结

在IDEA里用jdbc和用mybatis连接区别还是蛮大的:用jdbc是需要导入一个包,而sql语句则是直接在代码里构造;而用mybatis则是需要加入依赖,且需要配置,但sql语句与代码是分开的,直接在映射文件里更改sql就行了。当数据库的变更比较频繁时或查询的需求变化时,mybatis的使用更有利于代码的维护。


参考文献
从JDBC到Mybatis的改进
MyBatis-从JDBC到Spring整合MyBatis
IDEA使用mybatis连接MySQL

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/343493.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【Java数据库操作——从JDBC到Mybatis】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2