IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mybatis学习总结 -> 正文阅读

[大数据]Mybatis学习总结

1. 什么是Mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。


2.? 编写Mybatis的步骤

首先我们要写一个Mybatis的核心配置文件,我们一般叫Mybatis-config.xml,这个名字其实是可以随便起的,但是我们有一句话叫约定大于配置.

Mybatis.config.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>
    <!--读取db.properties文件-->
    <properties resource="db.properties" />

    <!--给类起别名-->
    <typeAliases>
        <typeAlias type="Models.aaa" alias="aaa"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--每一个Mapper都要注册-->
    <mappers>
        <mapper resource="Mapper/DemoMapper.xml"/>
    </mappers>
</configuration>

dp.properties里面写数据库的信息

第二步? 我们需要写一个Mybatis工具类

Utils.java

package 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 Util {
    public static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            //获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获取sqlSession对象,它完全包含了面向数据库执行SQL语句所需的所有方法
    public static SqlSession getSqlSession() {
        if(sqlSessionFactory==null){
            System.out.println("这个是空的");
        }
        //自动提交
        return sqlSessionFactory.openSession(true);
    }
}

这里要特别注意sqlsessionFactory的作用域,我第一次就在这里遇到空指针异常

第三步? 创建实体类

这一步就很简单了,跟数据库中的字段对应上就可以了,具体的代码就不写了,我们一般叫这种模型起名叫POJO

第四步 写一个Mapper接口

写一个方法

package Mapper;

import Models.aaa;

import java.util.List;

public interface DemoMapper {
    List<aaa> getInsert();
}

查询表里面的所有信息

第五步? 编写Mapper配置文件

DemoMapper.xml

<?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绑定一个接口-->
<mapper namespace="Mapper.DemoMapper">
    <!--id里面写方法名,resultType指的是返回类型-->
    <select id="getInsert" resultType="aaa">
        select * from aaa
    </select>

</mapper>

第六步? 执行方法

package Test01;

import Mapper.DemoMapper;
import Models.aaa;
import Utils.Util;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Test {
    public static void main(String[] args) {
        SqlSession sqlSession = Util.getSqlSession();
        DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);
        List<aaa> insert = mapper.getInsert();
        for (aaa aaa : insert) {
            System.out.println(aaa);
        }
        sqlSession.close();
    }
}

增删改都是一样的,写一个方法,然后在Mapper.xml文件里面配置

删除:

Mapper.xml文件代码

 <!--删除方法, parameterType是指传入类型-->
    <delete id="getDelete" parameterType="int">
        delete from aaa where id=#{id}
    </delete>

执行代码

  SqlSession sqlSession = Util.getSqlSession();
            DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);
            int delete = mapper.getDelete(1014);
            System.out.println("成功删除id为1014的学生信息");
            sqlSession.close();

增加:

<!--新增一个学生-->
    <insert id="getChange" parameterType="aaa">
        insert into aaa (id,myname,sex,myaddress) values(#{id},#{myname},#{sex},#{myaddress})
    </insert>

执行代码

  SqlSession sqlSession = Util.getSqlSession();
  DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);
  aaa aaa = new aaa(1015, "张三", "未知", "泰国");
  mapper.getChange(aaa);
  sqlSession.close();

万能Map,这个是我们最常用的

我们要查询一个学生信息,条件为id和姓名

 <select id="getSet" parameterType="map" resultType="aaa">
        select * from aaa where id=#{sid} and myname=#{name}
    </select>

执行方法

qlSession sqlSession = Util.getSqlSession();
        DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "李四");
        map.put("sid", 1015);
        List<aaa> set = mapper.getSet(map);
        for (aaa aaa : set) {
            System.out.println(aaa);
        }
        sqlSession.close();

未完待续

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:46:17  更:2022-02-09 20:48:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:32:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码