广告
返回顶部
首页 > 资讯 > 精选 >如何实现一个Mybatis程序
  • 824
分享到

如何实现一个Mybatis程序

2023-06-20 18:06:46 824人浏览 薄情痞子
摘要

这篇文章主要介绍了如何实现一个mybatis程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境说明:jdk 13MySQL 8.0.22Maven 3.8.1开发工具:i

这篇文章主要介绍了如何实现一个mybatis程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    环境说明:

    jdk 13MySQL 8.0.22Maven 3.8.1开发工具idea

    学习前需要掌握:

    JDBCMysqlJava 基础MavenJunit

    什么是MyBatis?

    MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了Google code,并且改名为MyBatis 。2013年11月迁移到GitHub .Mybatis官方文档 : Http://www.mybatis.org/mybatis-3/zh/index.htmlgitHub : https://github.com/mybatis/mybatis-3

    持久化

    持久化是将程序数据在持久状态和瞬时状态间转换的机制。

    即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制。文件io也是一种持久化机制。

    为什么需要持久化服务呢?那是由于内存本身的缺陷引起的

    内存断电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号等,遗憾的是,人们还无法保证内存永不掉电。内存过于昂贵,与硬盘、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

    持久层

    什么是持久层?

    完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】大多数情况下特别是企业级应用,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。不过这里有一个字需要特别强调,也就是所谓的“层”。对于应用系统而言,数据持久功能大多是必不可少的组成部分。也就是说,我们的系统中,已经天然的具备了“持久层”概念?也许是,但也许实际情况并非如此。之所以要独立出一个“持久层”的概念,而不是“持久模块”,“持久单元”,也就意味着,我们的系统架构中,应该有一个相对独立的逻辑层面,专注于数据持久化逻辑的实现.与系统其他部分相对而言,这个层面应该具有一个较为清晰和严格的逻辑边界。【说白了就是用来操作数据库存在的!】

    为什么需要Mybatis?

    Mybatis就是帮助程序猿将数据存入数据库中 , 和从数据库中取数据 .

    传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等… , 通过框架可以减少重复代码,提高开发效率 .

    MyBatis 是一个半自动化ORM框架 (Object Relationship Mapping) -->对象关系映射

    所有的事情,不用Mybatis依旧可以做到,只是用了它,所有实现会更加简单!技术没有高低之分,只有使用这个技术的人有高低之别

    MyBatis的优点

    简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件就可以了,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。提供xml标签,支持编写动态sql。…

    最重要的一点,使用的人多!公司需要!

    MyBatis第一个程序

    搭建实验数据库

    mysql里面建立mybatis数据库,用作测试的数据库,建一个user表,并初始化几条数据

    建表sql语句

    CREATE DATABASE `mybatis`;USE `mybatis`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(20) NOT NULL,`name` varchar(30) DEFAULT NULL,`pwd` varchar(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `user`(`id`,`name`,`pwd`) values (1,'qifei','123456'),(2,'chuachua','123456'),(3,'pig','111');

    导入MyBatis相关 jar 包

    新建一个maven项目,在pom.xml文件里面导入基本的框架和驱动。

    如何实现一个Mybatis程序

    依赖:

    <dependencies>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.22</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.5.7</version>        </dependency>        <!-- https://mvnrepository.com/artifact/junit/junit -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.13.2</version>            <scope>test</scope>        </dependency>    </dependencies>

    编写MyBatis核心配置文件

    查看帮助文档,编写MyBatis核心配置文件。

    如何实现一个Mybatis程序

    如何实现一个Mybatis程序

    编写MyBatis工具

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

    从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

    既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。

    如何实现一个Mybatis程序

    MybatisUtils.java:

    package com.luckylazypig.utils;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 java.io.IOException;import java.io.InputStream;public class MybatisUtils {    private static SqlSessionFactory sqlSessionFactory;    static {        try {            String resource = "mybatis-config.xml";            InputStream inputStream = Resources.getResourceAsStream(resource);            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        } catch (IOException e) {            e.printStackTrace();        }    }    //获取SqlSession连接    public static SqlSession getSession(){        return sqlSessionFactory.openSession();    }}

    创建实体类

    创建实体类用于接收数据库里面的字段,私有变量必须与数据库表字段名一一对应。

    如何实现一个Mybatis程序

    User实体类
    package com.luckylazypig.pojo;public class User {    private int id;    private String name;    private String pwd;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", pwd='" + pwd + '\'' +                '}';    }}

    编写Mapper接口类

    编写Mapper接口类

    如何实现一个Mybatis程序

    UserMapper.java:

    package com.luckylazypig.dao;import com.luckylazypig.pojo.User;import java.util.List;public interface UserMapper {    List<User> selectUser();}

    编写Mapper.xml配置文件

    namespace:对应你要实体化的接口id:对应你的要实例化接口的抽象方法resultType:对应你的返回类型对象,对象名是限定对象名

    如何实现一个Mybatis程序

    <?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"><mapper namespace="com.luckylazypig.dao.UserMapper">    <select id="selectUser" resultType="com.luckylazypig.pojo.User">  select * from user </select></mapper>

    编写测试类

    如何实现一个Mybatis程序

    测试类代码:

    package com.luckylazypig.dao;import com.luckylazypig.pojo.User;import com.luckylazypig.utils.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class UserMapperTest {    @Test    public void selectUser(){        SqlSession session = MybatisUtils.getSession();        UserMapper mapper = session.getMapper(UserMapper.class);        List<User> users = mapper.selectUser();//        List<User> users = session.selectList("com.luckylazypig.dao.UserMapper.selectUser");        for (User user : users) {            System.out.println(user);        }        session.close();    }}

    Maven静态资源过滤

    可能出现问题说明:Maven静态资源过滤问题

    如何实现一个Mybatis程序

    配置代码:

    <build>        <resources>            <resource>                <directory>src/main/java</directory>                <includes>                    <include>***.xml</include>                </includes>                <filtering>false</filtering>            </resource>            <resource>                <directory>src/main/resources</directory>                <includes>                    <include>***.xml</include>                </includes>                <filtering>false</filtering>            </resource>        </resources>    </build>

    感谢你能够认真阅读完这篇文章,希望小编分享的“如何实现一个Mybatis程序”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

    --结束END--

    本文标题: 如何实现一个Mybatis程序

    本文链接: https://www.lsjlt.com/news/299209.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何实现一个Mybatis程序
      这篇文章主要介绍了如何实现一个Mybatis程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境说明:jdk 13MySQL 8.0.22maven 3.8.1开发工具:I...
      99+
      2023-06-20
    • 手把手带你实现第一个Mybatis程序
      目录环境说明:学习前需要掌握:什么是MyBatis?持久化持久层为什么需要Mybatis?MyBatis第一个程序搭建实验数据库导入MyBatis相关 jar 包编写MyBa...
      99+
      2022-11-12
    • Mybatis怎么实现一个增删改查程序
      这篇文章主要介绍“Mybatis怎么实现一个增删改查程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis怎么实现一个增删改查程序”文章能帮助大家解决问题。idea新建Maven项目Myb...
      99+
      2023-06-30
    • Mybatis步骤分解实现一个增删改查程序
      目录 1.idea新建Maven项目Mybatis-study 将项目里的src文件夹删掉 依次将此项目作为父项目 2.在Mybatis-study中新建模块mybatis-01 在...
      99+
      2022-11-13
    • Android开发中如何实现在一个程序中启动另一个程序
      Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如...
      99+
      2023-05-31
      android roi
    • 第一个MyBatis程序(博客初写者)
        第一个Mybatis程序   一、环境:     1、JDK1.8   2、MYSQL5.7   3、IDEA   4、MAVEN 3.63     二、Mybatis认识:   1、查看官方文档 https://mybatis.org...
      99+
      2016-05-10
      第一个MyBatis程序(博客初写者)
    • 如何实现一个恶作剧vbs程序
      小编给大家分享一下如何实现一个恶作剧vbs程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!操作方法:把代码保存为*.VBS运行即可 经本人亲自测试 不会出大问题...
      99+
      2023-06-08
    • 如何用tensorflow来实现一个helloworld程序
      这篇文章将为大家详细讲解有关如何用tensorflow来实现一个helloworld程序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下面介绍如何用tensorflow来实现一个hellow...
      99+
      2023-06-19
    • MyBatis入门实例教程之创建一个简单的程序
      准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdem...
      99+
      2022-11-13
    • C语言如何实现一个扫雷程序
      本篇内容介绍了“C语言如何实现一个扫雷程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!整个游戏设计中主要的函数为:1、初始化地雷棋盘和显示...
      99+
      2023-06-17
    • 利用mybatis如何实现一个一对多查询功能
      利用mybatis如何实现一个一对多查询功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.需求分析:在开发中会遇到这样一个问题,查询订单信息,级联查询出用户信息和订单明...
      99+
      2023-05-31
      mybatis 一对多查询
    • 怎么用MyBatis创建一个简单的程序
      这篇文章主要介绍“怎么用MyBatis创建一个简单的程序”,在日常操作中,相信很多人在怎么用MyBatis创建一个简单的程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用MyBatis创建一个简单的程序...
      99+
      2023-06-29
    • Android编程实现在一个程序中启动另一个程序的方法
      本文实例讲述了Android编程实现在一个程序中启动另一个程序的方法。分享给大家供大家参考,具体如下: Android 开发有时需要在一个应用中启动另一个应用,比如Launch...
      99+
      2022-06-06
      程序 方法 启动 Android
    • Java如何实现一个顺序表
      这篇文章主要介绍Java如何实现一个顺序表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现一个顺序表接口实现定义一个MyArrayList类,在类中实现以下函数public class MyAr...
      99+
      2023-06-14
    • 如何实现一个基于Servlet的hello world程序
      这篇文章主要介绍如何实现一个基于Servlet的hello world程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 引入相关jar包首先,我们先在idea里创建出一个Maven项目出来,除了路径要...
      99+
      2023-06-29
    • Python实现一个发送程序和接收程序
      目录前言实验设计系统需求架构设计接口设计软件实现实验环境实验结果结果分析前言 实验目的:掌握开发、测试、发布、调用进程间通信的基本方法、工具和流程,理解独立构件体系结构基本原理、结构...
      99+
      2022-11-11
    • VS2019实现C++的第一个MFC程序
      目录一、创建项目二、添加自定义的功能(以比较通用的画图为例)参考文献:一、创建项目 然后点下一步,配置项目,这里我命名的是myfisrtmfc 点击创建按钮,然后弹出下面的对话...
      99+
      2022-11-12
    • 如何通过一个注解实现MyBatis字段加解密
      目录简介模块使用方法配置项说明开源链接总结简介 mybatis-crypto 是一个基于 mybatis 插件机制实现的字段加解密组件,通过一个注解即可对敏感数据进行加解密处理。 支...
      99+
      2022-11-13
    • Java中怎么实现一个多线程程序
      Java中怎么实现一个多线程程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java多线程程序设计详细解析一、理解Java多线程Java多线程是这样一种机制,它允许在程序中并...
      99+
      2023-06-17
    • 如何利用MyBatis创建一个存储过程
      如何利用MyBatis创建一个存储过程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一. 在Derby中创建存储过程在Eclipse中创建一个新的普通Java项...
      99+
      2023-05-31
      mybatis
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作