MyBatis搭建

news2025/1/16 16:51:55

目录

1.我的开发环境

2.创建maven工程

(1)打包方式 : jar

(2)引入依赖

3.创建MyBatis的核心配置文件

 4.创建mapper接口

5.创建MyBatis的映射文件

1.映射文件的命名规则:

2.MyBatis中可以面向接口操作数据 , 要保证两个一致 :

映射文件官方示例:

6.执行配置文件中的SQL语句

7.加入log4j日志功能

8.新增修改删除查询

(1)创建一个方法

(2)编写需要执行的SQL语句,且id要与方法名一一对应

(3)将执行的测试方法共同部分封装成一个工具类

(4)测试方法

小结 :


1.我的开发环境

开发工具 : IDEA 2021.01.02

构建工具 : maven 3.6.1

MYSQL版本 : MYSQL 8.0.29

MyBatis版本 : MyBatis 3.5.11

MySQL不同版本的注意事项

(1)驱动类driver-class-name

        MySQL 5 版本使用jdbc5驱动 , 驱动类使用 : com.mysql.jdbc.Driver                

        MySQL 8 版本使用jdbc8驱动 , 驱动类使用 : com.mysql.cj.jdbc.Driver        

(2)连接地址url

        MySQL 5 版本的url : jdbc:mysql://localhost:3306/test

        MySQL 8 的版本url : jdbc:mysql://localhost:3306/test?serverTimezone=UTC

2.创建maven工程

配置maven项目文件和镜像仓库

(1)打包方式 : jar

(2)引入依赖

<dependencies>
        <!--Mybatis核心-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!--junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!--MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
 </dependencies>

注 :

注 :需要联网下载

3.创建MyBatis的核心配置文件

核心配置文件主要用于配置连接数据库环境以及MyBatis的全局配置信息

核心配置文件存放的位置是src/main/resources目录下

官方的XML文件配置示例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <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>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

核心配置文件

 4.创建mapper接口

 mapper接口的命名规则 : 操作的表名 + Mapper

5.创建MyBatis的映射文件

1.映射文件的命名规则:

        表对应的实体类的类名 + Mapper.xml

        例如 : 表t_user , 映射的实体类为User , 所对应的映射文件为UserMapper.xml           

         注 : (1) 因此一个映射文件对应一个实体类 和 一张表

                (2) MyBatis映射文件用于编写SQL , 访问以及表中的数据

                (3) MyBatis映射文件存放的位置是src/main/resources/mappers目录下

2.MyBatis中可以面向接口操作数据 , 要保证两个一致 :

        (1) mapper接口的全类名和映射文件的命名空间(namespace)保持一致

        (2) mapper接口中方法的方法名和映射文件中编写SQL标签的id属性保持一致

映射文件官方示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
	 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	 "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
	 <select id="selectBlog" resultType="Blog">
	      select * from Blog where id = #{id}
	 </select>
</mapper>

例 :

 

6.执行配置文件中的SQL语句

创建一个测试类

package com.atguigu.mybatis.test;


import com.atguigu.mybatis.pojo.User;
import com.atguigu.mybatis.mapper.UserMapper;
import com.atguigu.mybatis.utils.SqlSessionUtil;
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.Test;

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

public class MyBatisTest {
    @Test
    public void testInsert() throws IOException {
        //获取核心配置文件的输入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");

        //获取SqlSessionFactoryBuilder(工厂模式)对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        //切换SQLSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);

        //openSession含自动提交事务的方法

        //获取sql的会话对象SqlSession(不会自动提交事务,需要手动提交事务) , 是MyBatis提供的操作数据库的对象
        //SqlSession sqlSession = sqlSessionFactory.openSession();

        //获取sql的会话对象SqlSession(会自动提交事务,需要在openSession中添加参数 true) , 是MyBatis提供的操作数据库的对象
        SqlSession sqlSession = sqlSessionFactory.openSession(true);

        //方法一(常用)
        //获取UserMapper的代理实现类对象,getMapper中封装了重写的方法(对接口进行重写)
        //注 : 接口不能直接实例化
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //调用mapper接口中的方法,实现添加用户信息的功能
        int result = mapper.insertUser();

        //方法二
        //提供SQL以及的唯一标识找到SQL并执行,唯一标识是namespace.sqlId
        //int result = sqlSession.insert("com.atguigu.mybatis.pojo.mapper.UserMapper.insertUser");

        System.out.println("结果:" + result);

        //commit 提交事务(手动提交)
        //sqlSession.commit();

        //关闭sqlSession
        sqlSession.close();
    }

7.加入log4j日志功能

加入依赖

<!--log4j日志-->
<dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
</dependency>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://cxf.apache.org/log4j">
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
	     <param name="Encoding" value="UTF-8"/>
	     <layout class="org.apache.log4j.PatternLayout">
	         <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L)\n"/>
	     </layout>
	</appender>
	<logger name="java.sql">
	    <level value="debug"/>
	</logger>
	<logger name="org.apache.ibatis">
	    <level value="info"/>
	</logger>
	<root>
	    <level value="debug"/>
	    <appender-ref ref="STDOUT"></appender-ref>
	</root>
</log4j:configuration>

8.新增修改删除查询

(1)创建一个方法

(2)编写需要执行的SQL语句,id要与方法名一一对应

(3)将执行的测试方法共同部分封装成一个工具类

(4)测试方法

小结 :

流程 :

        1.创建maven项目引入依赖(mybatis , junit , mysql)

        2.创建一个核心配置文件,文件名一般为 ( mybatis-config.xml ),用来连接数据库

        3.创建一个接口(用来接收MyBatis的映射文件) , 命名方法一般为需要操作的 表名 + Mapper . 定义一个方法来调用SQL语句 .

        4.创建映射文件 , 来编写SQL语句 ,命名与接口名相同 , 路径为接口的路径.

5.测试SQL语句

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩因为之前无论是电赛还是做项目&#xff0c;都用到了蓝牙模块&#xff0c;如&#xff1a;手机和stm32的通信&#xff0c;电赛中的双车通信&#xff0c;还是遥感小车的…

19 01-通过状态掩码读取DTC数目

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文介绍存储数据传输服务下的19服务ReadDTClnformation的第一个子功能&#xff08;01h&#xff09;&#xff0c;通过状态掩码读取DTC数目。 关联文章&#xff1a; 19服务List $19服务:DTCStatusMask和statusofDT…

肠道菌群化合物库——科研领域的研究靶点

近年来&#xff0c;肠道菌群已经成为科研领域的研究热点&#xff0c;涉及领域之广泛&#xff0c;最近几年的研究主要集中在肠道菌群与多种疾病发生和发展的联系。近年来&#xff0c;肠道菌群时常登上各大国际学术周刊&#xff0c;实火&#xff01; “闻声而来”的肠道菌群肠道…

【异构知识蒸馏:IVIF】

Heterogeneous Knowledge Distillation for Simultaneous Infrared-Visible Image Fusion and Super-Resolution &#xff08;同时进行红外-可见光图像融合和超分辨率的异构知识蒸馏&#xff09; 近年来&#xff0c;红外-可见光图像融合引起了越来越多的关注&#xff0c;并且…

数据采集网关如何打破数据孤岛,实现工业物联网

企业数字化发展到一定水平&#xff0c;就可能出现不平衡&#xff0c;催生出“数据孤岛”的现象。 企业内部存在多个设备多个系统&#xff0c;都有各自的数据&#xff0c;分门别类进行存储&#xff0c;这些部分之间累又建立有效的数据交换渠道&#xff0c;协议标准业不一致&…

实战讲解网关接口统一认证SpringCloudGateway(图+文)

1 缘起 继gateway限流篇&#xff1a;https://blog.csdn.net/Xin_101/article/details/127890605 之后&#xff0c;继续补充网关统一鉴权的相关应用&#xff0c; 网关作为所有流量入口&#xff0c;承接所有请求&#xff0c;因此&#xff0c;可以在网关层统一做鉴权&#xff0c;…

MIT6.830-2022-lab1实验思路详细讲解

文章目录前言一、6.830/Lab1 Start二、Exercise2.1、Exercise1&#xff1a;Fields and Tuples2.2、Exercise2&#xff1a;Catalog2.3、Exercise3&#xff1a;BufferPool2.4、Exercise4&#xff1a;HeapFile access method2.5、Exercise5&#xff1a;HeapFile2.6、Exercise6&…

DJ12-2-2 算术运算指令

目录 1. 加法指令 &#xff08;1&#xff09;ADD 指令 &#xff08;2&#xff09;ADC 指令 &#xff08;3&#xff09;INC 指令 2. 减法指令 &#xff08;1&#xff09;SUB 指令 &#xff08;2&#xff09;SBB 指令 &#xff08;3&#xff09;DEC 指令 &#xff08;4&…

Alluxio 2.9新版发布 | 重塑架构,支持大规模多租户环境

/ Alluxio宣布正式发布数据编排平台2.9版本 / Alluxio 2.9 版本的主要新增功能包括&#xff1a; 新增跨环境集群同步功能、增强Alluxio在Kubernetes上的可管理性、提高S3 API 安全性和用户体验 2022年11月17日&#xff0c;全球首创的开源数据编排软件开发商Alluxio宣布正式发…

1.2 分布

测度理论 (Durrett) 第五版 个人笔记 答案 Durrett高等概率论教材 (Probability) 攻读概率及统计/机器学习应用方向博士学位. Measure TheoryProbability SpacesDistributionsRandom VariablesIntegrationProperties of the IntegralExpected ValueProduct Measures, Fubini’…

[计算机毕业设计]机器视觉指纹识别图像识别

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

2022Q3运动户外行业数据分析(高增长概念解读)

本篇我们将继续来分析22年Q3季度中&#xff0c;运动户外行业的高增长概念。 在运动户外行业中&#xff0c;我们发现了3个高增长品类&#xff0c;分别是&#xff1a;泳镜、运动休闲鞋、运动包。 一、游泳用品高增长概念——泳镜 在功能上区分&#xff0c;泳镜可以分为竞速泳镜、…

十秒钟搞懂linux的软硬链接细节图解和目录结构文件的基本命令

秒懂linux链接图解一&#xff0c;软硬链接的分析1&#xff0c;软链接的图解&#xff1a;2&#xff0c;硬链接的图解3&#xff0c;软硬链接的区别4,目录创建软链接的语法格式二&#xff0c;linxu的根目录结构示意图和各部分的功能&#xff0c;可以根据单词部分记忆&#xff08;部…

SDN环境搭建(超详细)

文章目录前言一. 安装VMware workstation二、Ubuntn安装三、Mininet安装四、RYU安装五、WireShark安装六、在Mininet中启动可视化界面常见问题总结写在后面前言 最近在做SDN这方面的实验&#xff0c;在这里记录一下自己的学习过程和踩过的坑。 具体环境&#xff1a; VMware-wo…

RepGhost

轻量级的CNN模块重参数化技术构建硬件高效的 Ghost 模块,通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块&#xff0c;以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉&#xff0c;同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的…

swift-类属性-MachO读取

上一篇 swift-类属性 为源码层面类属性结构剖析&#xff0c;接下来从MachO层面验证读取类属性内容 极简类结构 class IFLPerson2 {var age: Int 20var heigh: Double 180}MachO-__swift5_types读取 var size: UInt 0//__swift5_types section 的pFilevar ptr getsectdata(…

Alibaba内部传出的面试秘技,秋招offer尽收囊中

又逢“金九银十”&#xff0c;年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;…

修改Cmder默认命令提示符

修改Cmder默认命令提示符常规操作第二种方法我的方法参考常规操作 打开在Cmder目录下的vendor文件夹&#xff0c;编辑里面的clink.lua文件找到local lambda “λ”&#xff0c;将“λ”修改为“$”&#xff0c;如图&#xff08;图片来源&#xff1a;https://www.jianshu.com/…

11月“图无处不在”线上直播 - Neo4j宣布下一代图数据平台Neo4j 5上线

中国北京&#xff0c;2022年11月10日—— 图技术的领导者Neo4j 宣布下一代可用于云端的图数据平台Neo4j 5上线。在传统数据库的基础上&#xff0c;扩大了原生图的性能优势&#xff0c;同时在本地、云、混合云或多云部署中实现更高可扩展性&#xff0c;从而使企业能够更快地创建…

Java 集合---尚硅谷Java入门视频学习

问题&#xff1a;什么时候需要一个容纳数据的容器&#xff0c;也就是集合对象&#xff1f; Java集合框架中就包含了对不确定个数的数据处理的集合类问题&#xff1a;如果只是为了容纳数据&#xff0c;可以是直接使用数组&#xff0c;为什么要学习集合&#xff1f; 数组使用起来…