首页 > 编程语言 >01 MyBatis第一个应用程序

01 MyBatis第一个应用程序

时间:2023-06-19 10:25:44浏览次数:53  
标签:01 title edit 应用程序 id mode MyBatis public

1、MyBatis是什么?

mybatis是一个基于java的持久层框架。

2、什么是持久化

数据由瞬态状态变为持久状态。

3、持久层:

完成持久化工作的代码块。 -- DAO层,将数据存到数据库

4、MyBatis 就是帮助程序员将数据存入数据库中,和从数据库中取数据。

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

6、MyBatis是一个半自动化的ORM框架

O -- object,R -- relationShip,M--mapping。

7、MyBatis的功能:

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

8、mybatis如何使用

整体的文件:

1)导入mybatis相关jar包:

maven依赖或者直接把jar包导入到编译路径下。
本例 从MyBatis的lib(/Users/huqiqi/Library/mybatis-3.5.2/lib)中里面直接拷出来,放到项目的lib文件夹下,另外要导入数据库驱动包。

2)编写mybatis的核心配置文件xml

mybatis.cfg.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/se_db"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/sxt/entity/Article.mapper.xml"/>
    </mappers>
</configuration>

易错说明:
1⃣️ 数据库url连接,需要加上 库名,如 /se_db。
2⃣️ mappers文件配置,需要加上 mapper.xml 文件的包名。

3)创建sqlSessionFactory

package cn.sxt.util;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "cn/sxt/util/mybatis.cfg.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }

    public static SqlSession getSession() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        return sqlSessionFactory.openSession();
    }
}

说明:
读取第二步中的配置文件 mybatis.cfg.xml,创建sqlSessionFactory。
导入报错说明:外部jar包需要添加到编译环境.

4)从SqlSessionFactory中去获取一个SqlSession

// MyBatisUtil.java 类增加方法如下:
public static SqlSession getSession() throws IOException {
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    return sqlSessionFactory.openSession();
}

说明:通过sqlSessionFactory.openSession() 获取一个sqlSession。

5)创建实体类

-- select id,title,edit_mode from article;
创建实体类:Article.java

package cn.sxt.entity;

// select id,title,edit_mode from article;
public class Article {
    private int id;
    private String title;
    private String edit_mode;

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getEdit_mode() {
        return edit_mode;
    }

    public void setEdit_mode(String edit_mode) {
        this.edit_mode = edit_mode;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", edit_mode='" + edit_mode + '\'' +
                '}';
    }
}

6)Mapper的配置,即sql语句的映射文件:

<?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="cn.sxt.entity.ArticleMapper">
    <select id="selectArticle" resultType="cn.sxt.entity.Article">
        select * from article where id = #{id}
    </select>
</mapper>

7)测试代码:

Test.java 类:

public class Test {
    public static void main(String[] args) throws IOException {
        SqlSession session = MyBatisUtil.getSession();
        // 第一个参数是 Article.mapper.xml 配置文件中的包名+id的名称
        // 第二个参数是 配置文件中的参数 #{id} 的值
        Article article = session.selectOne("cn.sxt.entity.ArticleMapper.selectArticle",1);
        System.out.println(article);
    }
}

结果:

标签:01,title,edit,应用程序,id,mode,MyBatis,public
From: https://www.cnblogs.com/hqq2019-10/p/17490443.html

相关文章

  • Android - 无法使用任何临时 SqlClient 版本(v2.1.4、v4.1.0、v5Preview)连接到 SQL Ser
    Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthepre-loginhandshake.设法用证书和IP地址解决它。使用powershell为您的IP地址创建证书:New-SelfSignedCertificate-certstorelocationcert:\localmachine\my-dns......
  • P2050 [NOI2012] 美食节
    luoguP2050[NOI2012]美食节题意CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节。作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴。他很快就尝遍了美食节所有的美食。然而,尝鲜的欲望是难以满足的。尽管所有的菜品都很可口,厨师做菜的速度也很快,小M仍然觉得......
  • MybatisPlus自动填充
    importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler;importlombok.extern.slf4j.Slf4j;importorg.apache.ibatis.reflection.MetaObject;importorg.springframework.stereotype.Component;importjava.time.LocalDateTime;@Slf4j@Componentpublic......
  • MybatisPlus拦截器配置
    /***配置mp的分页插件(拦截)*/@ConfigurationpublicclassMybatisPlusConfig{@BeanpublicMybatisPlusInterceptormpInterceptor(){MybatisPlusInterceptormybatisPlusInterceptor=newMybatisPlusInterceptor();mybatisPlusInterceptor.......
  • Mybatis
    MyBatis1、Mybatis简介1.1、什么是MyBatis**持久层框架**避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的实体类【PlainOldJavaObjects,普通的Java对象】映射成数据库中的记录。Myba......
  • Java Websocket 01: 原生模式 Websocket 基础通信
    目录JavaWebsocket01:原生模式Websocket基础通信JavaWebsocket02:原生模式通过Websocket传输文件Websocket原生模式原生模式下服务端通过@ServerEndpoint实现其对应的@OnOpen,@OnClose,@OnMessage,@OnError方法客户端创建WebSocketClient实现对应的......
  • MyBatis Plus
    MyBatisPlus是MyBatis的增强工具,它简化了MyBatis的使用,提供了更多的功能和特性,让开发者更加方便地进行数据库操作。本文将介绍MyBatisPlus的一些技术特点和使用方法。1.MyBatisPlus的技术特点MyBatisPlus的技术特点主要有以下几个方面:(1)简化开发:MyBatisPlus提供了很多常用......
  • 浅谈生活中常见的三大应用程序架构(PE、ELF、Mach-O)、五大操作系统(windows、linux、mac
    ·今天不聊复杂的技术,就是想做一下科普。我们生活中常见的操作系统,大致有5种分别是 电脑: Windows linux    macos手机 androidiosWindows手机操作系统没有发展起来,不同的操作系统间软件不能......
  • 给Nexus6p刷入lineage14.1(android 7.1)和 nethunter 2019.3
    本文依据kali教程编写https://build.nethunter.com/contributors/re4son/angler/INSTALLATION.txt写在前面的话你可能很奇怪,为什么有kali2020.3不用要刷入2019.3版本的。其实目的是使用安卓7,因为高版本安卓对某些软件的兼容性太差,刷入2019载手动升级到2020.3.Andrax在安卓7、9......
  • Java多线程-Lesson01-线程的创建
    线程创建的三种方式继承Thread类步骤:继承Thread类重写run()方法调用start()开启线程重写run()方法:@Overridepublicvoidrun(){for(inti=0;i<200;i++){System.out.println("run():"+i);}} run()方法里面就是我们多......