Mybatis框架介绍

news2024/12/31 6:26:49
Mybatis入门

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

Mybatis工程搭建

Mybatis是对JDBC轻量级的封装

性能:JDBC>Mybatis>Hibernate

Mybatis半自动框架 自定义sql

Hibernate全自动的 全靠配置文件,一般都是全字段,配置映射关系

功能:Hibernate>Mybatis>JDBC

1、创建maven工程
2、导入jar包/导入maven坐标
<!--单元测试-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<!--mybaits核心包-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.5</version>
</dependency>
<!--msyql的驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
<!--日志:记录应用程序所有的执行过程-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
3、创建实体类
4、创建核心配置文件 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>
    <!-- 一旦mybatis和Spring整合,environments则不需要再单独提供 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--配置mybatis的映射文件-->
    <mappers>
        <mapper resource="com/zx/dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>
5、创建实体类映射文件,并添加进核心配置文件中
<?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.zx.dao.UserDao">
    <insert id="addUser" parameterType="com.zx.entity.User">
        insert into t_user values (null,#{username},#{password})
    </insert>
</mapper>
 6、测试
@Test
public void addUser() throws IOException {
    //读取配置文件
    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    //通过配置文件创建SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //通过sqlSessionFactory创建核心类  sqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //通过sqlSession获取dao接口
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    //执行增删改查操作
    User user = new User("路飞","lufei");
    userDao.addUser(user);
    //提交sqlSession
    sqlSession.commit();
    //关闭sqlSession
    sqlSession.close();
}
注意事项:

1.mybatis核心配置文件mybatis-config.xml或者sqlmapper.xml

2.核心配置文件中需要写入两部分内容:数据库环境配置和映射文件

3.映射文件的名称XXXMapper.xml或者XXXDao.xml

4.映射文件的路径应该在资源文件夹resources下和XXXDao相同文件夹下

5.映射文件中的mapper中的命名空间namespace必须写XXXDao的全限定类名<mapper namespace="com.zx.dao.UserDao">

6.映射文件中的标签id名字必须是XXXDao接口中方法的名称

其他增删查改操作
xml方式:

test类:

 UserMapper接口,也就是之前常用的dao层的类

 UserMapper的xml映射文件

注解方式:

使用注解需要先修改mybatis-config.xml文件中的配置mybatis的映射文件的操作,改成扫描UserMapper接口

在每个方法上写上对应的注解,详细看下图中红色框部分

 

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

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

相关文章

IT管控体系建设(集团企业),附网传埃森哲案例

&#xff08;一&#xff09;集团IT企业IT管控组织结构设计 1.集团分管领导 职能&#xff1a;最高级别的管理&#xff0c;负责对整个集团的信息化管控进行监督和决策。 2.CIO/管理部主任 职能&#xff1a;负责整体的IT战略和方向&#xff0c;直接向集团分管领导汇报。负责协…

一分钟了解:Java 冒泡排序算法

1. 冒泡排序算法介绍 冒泡排序是最简单的排序算法&#xff0c;如果相邻元素的顺序错误&#xff0c;则通过反复交换相邻元素来工作。Java 中的冒泡排序不是对数组进行排序的最佳方法&#xff0c;但却是最基本的实现之一。在本文中&#xff0c;我们将学习如何用 Java 编写冒泡排…

「Pytorch」解析 nn.Embedding 词嵌入 及反推输入

在Pytorch里面有三种编码方式&#xff0c;Embedding 就是其中之一&#xff0c;不同于 one_hot 需要用同长度的张量存 Embedding将单词映射为稠密向量&#xff0c;并且指定 embedding_dim维度。通过 Embedding层 转换的数据并不是经过词典映射的&#xff0c;而是原始数据。Embed…

VirtualBox扩容VDI虚拟磁盘

环境 虚拟机软件&#xff1a;VirtualBox虚拟机&#xff1a;Ubuntu 18.04.1 第一步&#xff1a;调整虚磁盘大小 方法1&#xff1a;使用VirtualBox管理器直接修改 关闭虚拟机&#xff0c;点击VirtualBox管理器菜单管理>虚拟介质管理&#xff0c;重新设大小 方法2&#x…

【Linux基础】对Linux权限的理解与管理

目录 &#x1f680;前言一&#xff0c;有关用户二&#xff0c;Linux权限管理1. 文件访问者的分类(人)2. 文件类型和访问权限(事物属性)2.1 文件类型2.2 文件/目录的基本权限 三&#xff0c;文件权限值的表示方法3.1 字符表示方法3.2 八进制数值表示方法 四&#xff0c;文件访问…

服务器是什么?怎么选择适合自己的服务器?

在这个数字化的世界中&#xff0c;我们每天都在与各种网站打交道&#xff0c;浏览新闻、购物、看视频等。你是否曾经好奇过&#xff0c;这些网站是如何运行的&#xff1f;它们又是如何实现随时随地可访问的呢&#xff1f; 在这背后&#xff0c;有一个神秘的角色在默默地支撑着…

数据结构与算法 - 贪心算法

一、贪心例子 贪心算法或贪婪算法的核心思想是&#xff1a; 1. 将寻找最优解的问题分为若干个步骤 2. 每一步骤都采用贪心原则&#xff0c;选取当前最优解 3. 因为没有考虑所有可能&#xff0c;局部最优的堆叠不一定让最终解最优 贪心算法是一种在每一步选择中都采取在当前…

letcode 分类练习 树的遍历

letcode 分类练习 树的遍历 树的构建递归遍历前序遍历中序遍历后序遍历 迭代遍历前序遍历中序遍历后序遍历 层序遍历层序遍历可以解决的问题107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的…

掌机系统MuOS游戏名称中文乱码解决主题

最近买了安伯尼克的rg35xxh掌机来玩儿&#xff0c;然后刷了muos&#xff0c;系统很小巧&#xff0c;1g的运行内存&#xff0c;系统运行的时候只占用了不到100m&#xff0c;而且界面也很美观&#xff0c;就是有一个问题——中文名称会乱码&#xff0c;都变成了方框&#xff0c;从…

如何给IP地址开启https—IP证书

先IP地址申请的前提&#xff1a;80端口有打开&#xff0c;或者可以短暂的打开10分钟左右等验证完IP管理权再关掉。 一&#xff1a;访问JoySSL官网&#xff0c;注册账号并填写注册码230922&#xff0c;选择IP地址证书并下单加入购物车&#xff0c;下单之后就会跳转到证书申请界…

Linux--应用层协议HTTP协议(http服务器构建)

目录 1.HTTP 协议 2.认识 URL 3.urlencode 和 urldecode&#xff08;编码&#xff09; urlencode&#xff08;URL编码&#xff09; urldecode&#xff08;URL解码&#xff09; 4.HTTP 协议请求与响应格式 4.1HTTP 常见方法&#xff08;三种&#xff09; 5.HTTP 的状态码…

C++:命名空间与输入输出

目录 前言 一、命名空间 1.1 namespace的价值 1.2 namespace的定义 1.3 命名空间的使用 二、C输入&输出 前言 C是一种面向对象的计算机程序设计语言&#xff0c;‌它扩展了C语言的功能&#xff0c;‌并引入了面向对象编程的概念&#xff0c;‌如类、‌继承和多态等&a…

【笔记】从零开始做一个精灵龙女-画贴图阶段(下)

补充四点&#xff0c;第一&#xff0c;前期画体积用一号或十三号笔刷&#xff0c;压力60&#xff0c;硬度80&#xff0c;体积大一点 2号笔刷比较适合画过渡和软一点的东东 第二&#xff0c; 游戏里面角色原画海报都是发光很亮很透。但是在bp不能画那么亮&#xff0c;因为你进…

git强制推送代码教程

git强制推送代码教程 首先说明情况&#xff0c;我的代码remote了两个git库&#xff0c;现在想要推送到其中一个&#xff0c;但是版本不对&#xff0c;被拒绝&#xff0c;因此下面将进行强制推送 首先检查远程库都有哪些 git remote -v2. 检查当前的分支 git branch当前分支前…

Python 初学者入门:揭秘 Anaconda

初学者在学习 Python 时&#xff0c;经常看到的一个名字是 Anaconda。究竟什么是 Anaconda&#xff0c;为什么它如此受欢迎&#xff1f;在这篇文章中&#xff0c;我们将探讨 Anaconda &#xff0c;了解 Anaconda 的从安装到使用的。 Anaconda 是一个免费开源的 Python 和 R 编…

PCL 三线性插值

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 三线性插值是一种在三维空间中使用已知数据点进行插值的方法。它是在立方体内的插值方法,通过利用立方体的八个顶点的已知值来估算立方体内任意一点的值。三线性插值扩展了一维的线性插值和二维的双线性插值。其基…

数据结构入门——06树

1.树 树&#xff08;Tree&#xff09;非线性数据结构&#xff0c;它是n&#xff08;n≥0&#xff09;个节点的有限集合&#xff0c;它满足两个条件 &#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b; 其余的节点可以分为m&#xff08;m…

一文带你快速了解——keepalived高可用集群

一、高可用集群 1.1 集群类型 LB&#xff1a;Load Balance 负载均衡LVS/HAProxy/nginx&#xff08;http/upstream, stream/upstream&#xff09;HA&#xff1a;High Availability 高可用集群 数据库、RedisSPoF: Single Point of Failure&#xff0c;解决单点故障HPC&#xf…

Java_finalize

目录 finalize方法 案例演示 finalize方法 当垃圾回收器确定不存在对该对象的更多引用时&#xff0c;由对象的垃圾回收器调用此方法。 当对象被回收时&#xff0c;会自动调用&#xff0c;子类可以重写该方法&#xff0c;做一些释放资源的操作。 案例演示 可以使用快捷键进行…