MyBatis入门的第一个程序

news2024/12/26 10:51:46

2023.10.28

        今天正式开始MyBatis的学习,先来一个入门程序的编写。

①准备一个数据库表:

②配置pom.xml文件:(打包方式和2个依赖的引入)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>jay</groupId>
    <artifactId>mybatis-001</artifactId>
    <version>1.0-SNAPSHOT</version>
<!--    打包方式-->
    <packaging>jar</packaging>

    <dependencies>
<!--        mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>
<!--        mysql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>


    </dependencies>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

③配置mybatis-config.xml文件

ps:mybatis核心配置文件存放的位置可以随意。这里选择放在resources根下,相当于放到了类的根路径下。

④新建CarMapper.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="abc">
<!--    insert语句-->
    <insert id="insertCar">
        insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
        values (null,'1004','劳斯莱斯',100,'2011-10-11','燃油车')
    </insert>

</mapper>

ps:该文件是用来编写sql语句的。

ps:CarMapper.xml文件的位置也是随意的。这里选择放在resources根下,相当于放到了类的根路径下。

⑤编写mybatis_test.java核心代码

package mybatis;

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 mybatis_test {
    public static void main(String[] args) throws Exception {
        //获取SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取SqlSessionFactory对象
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //执行SQL语句
        int count = sqlSession.insert("insertCar");
        System.out.println("插入了几条记录:" + count);
        //需要手动提交
        sqlSession.commit();
    }
}

ps:默认采用的事务管理器是:JDBC。JDBC事务默认是不提交的,需要手动提交。所以最后一行要加一行手动提交事务的代码,否则数据库不会更新数据。

这里也可以将mybatis-config.xml文件中的JDBC改为MANAGED,意思就是不让Mybatis自动管理事务了,交给其他容器负责,如:spring。 此时修改成MANAGED之后不做任何操作的话,事务就没人管了,会自动提交,不需要最后那一行手动提交的代码了。

pps:也可以在  SqlSession sqlSession = sqlSessionFactory.openSession();这行代码中加个参数:true。 表示自动提交,这样也不需要手动提交了。但是不建议这么做。

        最后执行mybatis_test.java文件,控制台会显示:

在Navicat中按F5刷新页面,会显示更新的数据库:

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

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

相关文章

freeRTOS学习day4-中断使用消息队列

首先设置好中断优先级 看freeRTOS配置文件 freeRTOS可以管理的优先级范围是5-15 所以开始我把子优先级设置为4 会卡死在发送那里 https://www.cnblogs.com/realiot/articles/16699272.html 另外一点 一定要设置中断优先级分组 忘了设置也会卡死 void USART1_IRQHandler(vo…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…

【电路笔记】-交流波形和交流电路理论

交流波形和交流电路理论 文章目录 交流波形和交流电路理论1、概述2、交流发电2.1 涡轮发电2.2 变压器 3、交流功率3.1 RMS值3.2 功率分配 4、总结 当谈论电流或电压时&#xff0c;这些信号可以分为两大类&#xff1a;直流和交流。 DC 状态为“直流电”&#xff0c;该定义重新组…

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线,可以进入轻松学编程

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线&#xff0c;可以进入轻松学编程 学习编程捷径&#xff1a;&#xff08;不论是正在学习编程的大学生&#xff0c;还是IT人士或者是编程爱好者&#xff0c;在学习编程的过程中用正确的学习方法 可以达到事半…

构造、清理、拷贝和移动简单实例

Complex 复数类 显示地写出构造、清理、拷贝和移动。 Complex类 class Complex { private:double real 3; //复数的实部double imag 4; //复数的虚部 public:Complex(); /*无参构造*/Complex(double a, double b); /*有参构造*/Complex(Complex& …

docker 中给命令起别名

docker 的有些命令特别复杂&#xff0c;我们可以给它设置别名简化输入&#xff0c;就不用每次都输入那么多了&#xff01;&#xff01;&#xff01; 1. 进入 .bashrc 中修改配置&#xff08; .bashrc 是root下的隐藏文件&#xff09; cd /rootvim .bashrc2. 在 .bashrc 中加入…

Java架构师系统相关与性能评价

目录 1 导学2 计算机语言3 多媒体4 系统工程2 性能指标3 性能评价方法4 阿姆达尔解决方法想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 计算机语言 计算机语言是人与计算机之间交流的桥梁,它们帮助人们编写程序并让计算机理解执行。计算机语言可以分为不同…

【算法练习Day31】单调递增的数字买卖股票的最佳时机含手续费监控二叉树

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 单调递增的数字买卖股票的最…

【爬虫】python打包可执行程序(ui界面制作完成后)

1.安装pyinstaller pip install pyinstaller可能出现连接超时安装不上的情况,可以切换源进行下载 pip install -i http://pypi.douban.com/simple/ pyinstaller2.打包程序 pyinstaller xxxxx.py --noconsole --hidden-import PySide6.QtXml

锐捷云课堂主机 默认口令 目录遍历漏洞

输入默认账号密码admin/admin,成功登录 构造payload&#xff0c;并访问&#xff1a; /pool/目录遍历漏洞&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法…

电子器件 电容的参数、选型与使用技巧

一、参数 最重要的参数有五个&#xff0c;分别是精度、温度系数、耐压、温度范围和ESR。 1.1 精度 电容和电阻不同&#xff0c;电阻精度可以做到高于 0.1%&#xff0c;而电容的话 5% 精度非常高的了。一般为 5%&#xff0c;10%&#xff0c;25% 等。 1.2 温度系数 电容的电…

Graalvm-21 Windows初体验

前言 除了最新新出的jdk21以外&#xff0c;oracle还推出了重磅的graalvm-jdk-21。这个graalvm可以把java代码编译为本地执行文件&#xff0c;就是把原来的jar包直接打成exe。并且使用打完的exe占用的内存资源更小&#xff0c;启动速度更快&#xff0c;非常适合云平台部署&#…

仓库管理系统源代码集合,带图片展示和网站演示

目录 1、ModernWMS2、GreaterWMS3、kopSoftWMS4、SwebWMS5、若依wms6、jeewms 1、ModernWMS 体验地址&#xff1a;https://wmsonline.ikeyly.com 简易完整的仓库管理系统 该库存管理系统是&#xff0c;我们从多年ERP系统研发中总结出来的一套针对小型物流仓储供应链流程。 简…

crs 维护模式 exclusive mode

How To Validate ASM Instances And Diskgroups On A RAC Cluster (When CRS Does Not Start). (Doc ID 1609127.1)​编辑To Bottom [rootrac1 ~]# ps -ef|grep grid root 2477 1 1 20:47 ? 00:00:51 /opt/oracle.ahf/jre/bin/java -server -Xms32m -Xmx64…

JavaScript控制流程简介

目录 条件语句 if语句 else if语句 else语句 循环语句 for循环 while循环 do...while循环 switch语句 总结 在编程中&#xff0c;控制流程是指程序执行的顺序&#xff0c;即代码按照何种方式被执行。JavaScript作为一种强大的脚本语言&#xff0c;具备了灵活的控制流…

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件&#xff0c;参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…

uniapp的一些总结

目录 前言 解决方案 1. 跨平台开发 2. Vue.js生态 3. 组件库 4. 自定义组件 5. Native能力 6. 插件生态 7. 性能优化 写法 1. 模板&#xff08;Template&#xff09; 2. JavaScript 3. 样式&#xff08;Style&#xff09; 代码 高质量 结论 事件 API 1. 获取…

二叉树:有了如此高效的散列表,为什么还需要二叉树?

文章来源于极客时间前google工程师−王争专栏。 上一节我们学习了树、二叉树以及二叉树的遍历&#xff0c;今天我们再来学习一种特殊的的二叉树&#xff0c;二叉查找树。二叉查找树最大的特点就是&#xff0c;支持动态数据集合的快速插入、删除、查找操作。 我们之前说过&…

MODBUS-RTU从站通信(SMART PLC作为MODBUS-RTU从站)

SMART PLC作为MODBUS-RTU主站通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看…