myBatis的基本操作(持续更新中。。。)

news2024/9/22 18:25:58

目录

  • 1. 简介
  • 2. 简单使用
  • 3. 代理开发
  • 4. 小技巧
  • 5. 动态查询
  • 6. 注解(待更新)
  • 底部

1. 简介

mybatis是一款优秀的持久层框架,用来简化JDBC开发

持久层:负责将数据保存到数据库的那一层代码

2. 简单使用

依赖

<dependencies>  
        <dependency>            
	        <groupId>org.mybatis</groupId>  
            <artifactId>mybatis</artifactId>  
            <version>3.5.14</version>  
        </dependency><!--        mysql的驱动-->  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <version>5.1.26</version>  
        </dependency>        
        <dependency>            
	        <groupId>junit</groupId>  
            <artifactId>junit</artifactId>  
            <scope>test</scope>  
            <version>4.13.2</version>  
        </dependency>    
    </dependencies>
<?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="${url}"/>  
                <property name="username" value="${username}"/>  
                <property name="password" value="${password}"/>  
            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="org/mybatis/example/BlogMapper.xml"/>  
    </mappers></configuration>

![[Pasted image 20240719201225.png]]

Userx

package com.yxz.pojo;  
  
import java.util.Date;  
  
public class Userx {  
    private Integer id;  
    private String username;  
    private Date birthday;  
    private Character sex;  
    private String address;  
  
    public Integer getId() {  
        return id;  
    }  
  
    public void setId(Integer id) {  
        this.id = id;  
    }  
  
    public String getUsername() {  
        return username;  
    }  
  
    public void setUsername(String username) {  
        this.username = username;  
    }  
  
    public Date getBirthday() {  
        return birthday;  
    }  
  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
  
    public Character getSex() {  
        return sex;  
    }  
  
    public void setSex(Character sex) {  
        this.sex = sex;  
    }  
  
    public String getAddress() {  
        return address;  
    }  
  
    public void setAddress(String address) {  
        this.address = address;  
    }  
  
    @Override  
    public String toString() {  
        return "Userx{" +  
                "id=" + id +  
                ", username='" + username + '\'' +  
                ", birthday=" + birthday +  
                ", sex=" + sex +  
                ", address='" + address + '\'' +  
                '}';  
    }  
}

UserMapper.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 namespace="test">  
  
    <select id="selectAll" resultType="com.yxz.pojo.Userx">  
        select * from userx;  
    </select>  
</mapper>

进行测试:

package com.yxz;  
  
import com.yxz.pojo.Userx;  
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;  
import java.util.List;  
  
public class MybatisDemo {  
    public static void main(String[] args) throws IOException {  
        // 1. 加载mybatis的核心配置文件,获取SqlSessionFactory  
        String resource = "mybatis-config.xml";  
        InputStream inputStream = Resources.getResourceAsStream(resource);  
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
  
        // 2. 获取对应的SqlSession对象,用它执行sql  
        SqlSession sqlSession = sqlSessionFactory.openSession();  
  
        // 3. 执行sql  
        List<Userx> userxs =  sqlSession.selectList("test.selectAll");  
        System.out.println(userxs);  
        sqlSession.close();  
    }  
}

建好数据库
在这里插入图片描述

目录:
在这里插入图片描述

3. 代理开发

在这里插入图片描述

创建一个接口,作为代理

package com.yxz.dao;  
  
import com.yxz.pojo.Userx;  
  
import java.util.List;  
  
public interface UserMapper {  
  
    List<Userx> selectAll();  
}

命名空间修改:

<?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.yxz.dao.UserMapper">  
  
    <select id="selectAll" resultType="com.yxz.pojo.Userx">  
        select * from userx;  
    </select>  
</mapper>

进行测试

package com.yxz;  
  
import com.yxz.dao.UserMapper;  
import com.yxz.pojo.Userx;  
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;  
import java.util.List;  
  
public class MybatisDemo {  
    public static void main(String[] args) throws IOException {  
        // 1. 加载mybatis的核心配置文件,获取SqlSessionFactory  
        String resource = "mybatis-config.xml";  
        InputStream inputStream = Resources.getResourceAsStream(resource);  
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
  
        // 2. 获取对应的SqlSession对象,用它执行sql  
        SqlSession sqlSession = sqlSessionFactory.openSession();  
  
        // 3. 执行sql  
//        List<Userx> userxs =  sqlSession.selectList("test.selectAll");  
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);  
        List<Userx> userxs =  userMapper.selectAll();  
        System.out.println(userxs);  
        sqlSession.close();  
    }  
}

4. 小技巧

起别名

<typeAliases>  
    <package name="com.yxz.pojo"/>  
</typeAliases>
<select id="selectAll" resultType="userx">  
    select  
    <include refid="brand_column"/>  
    from userx;  
</select>  
<sql id="brand_column">  
    id,username, birthday, sex, address  
</sql>
<select id="selectById" parameterType="int" resultType="userx">  
    select  
    <include refid="brand_column"/>  
    from userx where id  
     <![CDATA[        <     ]]>     #{id};</select>

5. 动态查询

choose when otherwise
set if

delete from user where id 
in(<foreach collction="ids" item="id" separator=",">#{id} </foreach>) ;

在这里插入图片描述

6. 注解(待更新)

@Select
@Insert
@Update
@Delete

底部

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

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

相关文章

LabVIEW断路器操动机构运动速度检测

开发了一种基于LabVIEW设计平台开发的断路器操动机构运动速度检测系统。通过集成高速相机和图像处理技术&#xff0c;该系统能够实时监控和分析操动机构的动态性能&#xff0c;为电力系统提供关键的技术支持。 项目背景 随着工业化的发展&#xff0c;对电力系统的稳定性和可靠…

python的tkinter、socket库开发tcp的客户端和服务端

一、tcp通讯流程和开发步骤 1、tcp客户端和服务端通讯流程图 套接字是通讯的利器&#xff0c;连接时要经过三次握手建立连接&#xff0c;断开连接要经过四次挥手断开连接。 2、客户端开发流程 1&#xff09;创建客户端套接字 2&#xff09;和服务端器端套接字建立连接 3&#x…

钡铼分布式I/O系统边缘计算Modbus,MQTT,OPC UA耦合器BL206

BL206系列耦合器是一个数据采集和控制系统&#xff0c;基于强大的32 位微处理器设计&#xff0c;采用Linux操作系统&#xff0c;支持Modbus&#xff0c;MQTT&#xff0c;OPC UA协议&#xff0c;可以快速接入现场PLC、DCS、PAS、MES、Ignition和SCADA以及ERP系统&#xff0c;同时…

习题2.21

(defn rever [a](defn item[l r](if ( nil (first l)) r(item (rest l) (cons (first l) r))))(item a nil)) 这段代码非常有助于理解什么是深度优先&#xff0c;什么是广度优先。 很久没有写习题的代码了&#xff0c;倒不是懒得做习题了&#xff0c;是私事多&#xff0c;状态…

【局域网服务器连接】如何远程连入实验室linux系统服务器?| 局域网 | 内网穿透

文章目录 前言服务器基本配置安装 ssh 服务防火墙放行 局域网内网穿透获取SN码添加映射 总结 前言 简单记录连接实验室服务器步骤。如服务器直接有公网 ip 地址&#xff0c;ssh 直接连入即可&#xff0c;无需参考本文。 与服务器连同一 wifi&#xff0c; 参考 局域网 方式连接…

Android:requestLayout、invalidate 和 postInvalidate 的区别

提醒&#xff1a;下面源码来自SDK里Android-34版本 一、requestLayout 点击查看requestLayout官网文档 1.1 requestLayout方法源码 /*** Call this when something has changed which has invalidated the* layout of this view. This will schedule a layout pass of the v…

【C++航海王:追寻罗杰的编程之路】关于空间配置器你知道多少?

目录 1 -> 什么是空间配置器 2 -> 为什么需要空间配置器 3 -> SGI-STL空间配置器的实现原理 3.1 -> 一级空间配置器 3.2 -> 二级空间配置器 3.2.1 -> 内存池 3.2.2 -> SGI-STL中二级空间配置器设计 3.2.3 -> SGI-STL二级空间配置器之空间申请 …

Spring Boot 3.3 【三】Spring Boot RESTful API 增删改查详细教程

Spring Boot RESTful API 增删改查详细教程 一、RESTful 架构风格简介 1. 简介 RESTful API 是一种基于HTTP协议的网络应用接口设计风格&#xff0c;它遵循REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;原则。RESTful架构风格的出…

花几千上万学习Java,真没必要!(二十)

ArrayList 是一种可以动态增长和缩减的数组&#xff0c;与普通的数组相比&#xff0c;它提供了更加灵活的操作方式。ArrayList 内部使用数组来存储元素&#xff0c;但是它会根据需要自动调整数组的大小&#xff0c;以便能够存储更多的元素。 ArrayList 的主要特点包括&#xf…

如何成为学习高手

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 所有的学习方式&#xff0c;核心都是动脑加动手。 区别在于如何让…

吴恩达大模型LLM系列课程学习(更新42门课程)

目录 GPT-4o详细中文注释的Colab中英文字幕观看视频1 浏览器下载插件2 打开官方视频 课程1&#xff1a;Prompt Compression and Query Optimization课程2&#xff1a;Carbon Aware Computing for GenAI developers课程3&#xff1a;Function-calling and data extraction with …

Java语言程序设计——篇六(1)

字符串 概述创建String类对象     字符串基本操作实战演练 字符串查找字符串转换为数组字符串比较实战演练 字符串的拆分与组合 概述 字符串 用一对双引号“”括起来的字符序列。Java语言中&#xff0c;字符串常量或变量均用类实现。 字符串有两大类&#xff1a; 1&…

2024年【起重机司机(限桥式起重机)】考试题及起重机司机(限桥式起重机)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)考试题参考答案及起重机司机(限桥式起重机)考试试题解析是安全生产模拟考试一点通题库老师及起重机司机(限桥式起重机)操作证已考过的学员汇总&#xff0c;相对有效帮助起重机司机(限桥式起重…

JS 原型与原型链图解:彻底搞懂的终极指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 在JavaScript中&#xff0c;原型和原型链是非常重要的知识点&#xff0c;只有理解了…

Express+mysql单表分页条件查询

声明&#xff08;自己还没测试过&#xff0c;只提供大概逻辑&#xff0c;什么多表连接查询可以在原基础上添加&#xff09; class /*** param connection Express的mysql数据库链接对象* current 当前页* pageSize 一页显示行数* where [{key:id,operator:,value15}], key查询…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 卢小姐的生日礼物(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

pg_restore导入错误的解决思路

背景 开发使用postgresql 数据库&#xff0c;当需要部署时&#xff0c;通过pg_dump导出&#xff0c;通过pg_restore导入&#xff0c;发现导入遇到错误&#xff0c;很多表没有导入。部分报错截图如下&#xff1a; 排查问题 开发中用到了postgresql插件postgis里的地理类型&am…

ORBSLAM3 ORB_SLAM3 Ubuntu20.04 ROS Noetic 虚拟机镜像 下载

下图是build.sh 和 build_ros.sh编译结果截图&#xff1a; slam数据集测试视频&#xff1a; orbslam3 ubuntu20.04 test 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1nre0Y9vig5QXIGU52qCLbQ?pwd9rbi 提取码&#xff1a;9rbi

什么是裸机管理程序?

在这个旨在使最终用户体验尽可能无缝的快节奏环境中&#xff0c;企业不断扩展其网络以处理增加的负载&#xff0c;为了应对可扩展性问题并增强其设备的最佳性能&#xff0c;网络管理员开始使用虚拟化技术。 通过使用管理程序虚拟化网络&#xff0c;网络管理员可以实现灵活、可…

C++基础(3.内和对象)

目录 赋值运算符重载: const限制权限&#xff1a; 隐式类型转换&#xff1a; 再探构造函数&#xff1a; static成员&#xff1a; 有元&#xff1a; 内部类&#xff1a; 赋值运算符重载: 赋值运算符重载是一个默认成员函数,用于完成两个已经存在的对象直接的拷贝赋值.要注…