mybatis基础篇-mybatis使用-mybatis工具类封装

mybatis官网

https://mybatis.org/mybatis-3/zh_CN/getting-started.html
官网跳转连接

jar包下载

https://download.csdn.net/download/weixin_44201223/89146621
本练习所需jar包资源下载

1、创建数据库数据

# 创建数据库
create database test;
use test;
# 创建表
create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);# 添加数据
INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');

2、添加jar包

1).主包 1 个(必须):
mybatis-3.2.7.jar (Mybatis核心包)
2).依赖包 4 个:
asm-3.3.1.jar (Cglib依赖的包)
cglib-2.2.2.jar (动态代理包)
commons-logging-1.1.1.jar (日志包)
javassist-3.17.1-GA.jar (字节码解析包也是cglib依赖的包)
3).mysql 驱动包 1 个(必须):
mysql-connector-java-5.0.8-bin.jar

3、全局配置文件编写mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--环境使用,可能会有生产环境,测试环境...可以编写多个, default 引用 environment 的 id,当前
所使用的环境--><environments default="development"><!-- 声明可以使用的环境(如:开发环境(development),测试环境(testing),生产环境
(production),三个环境是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境) --><environment id="development"><!-- 使用原生 JDBC  --><transactionManager type="JDBC"/><!-- POOLED数据源的配置, property配置JDBC四个变量--><dataSource type="POOLED"><!-- <property name="driver" value="${driver}"/> --><!-- 数据库为8.X版本使用 --><property name="driver" value="com.mysql.cj.jdbc.Driver"/><!-- 数据库为5.X版本使用 --><!-- <property name="driver" value="com.mysql.jdbc.Driver"/> --><!-- <property name="url" value="${url}"/> --><!-- test为自己创建的数据库 --><property name="url" value="jdbc:mysql://localhost:3306/test"/><!-- <property name="username" value="${username}"/> --><property name="username" value="root"/><!-- 输入自己数据库密码 --><!-- <property name="password" value="${password}"/>  --><property name="password" value="数据库密码"/></dataSource></environment></environments><!-- MyBatis查找映射文件 第6步骤之后 --><mappers><mapper resource="EmpMapper.xml"/></mappers>
</configuration>

4、创建EmpModel实体类

private int emp_id;private String emp_name;private double emp_salary;private int emp_age;public empModel() {}public empModel(int emp_id, String emp_name, double emp_salary, int emp_age) {this.emp_id = emp_id;this.emp_name = emp_name;this.emp_salary = emp_salary;this.emp_age = emp_age;}public int getEmp_id() {return emp_id;}public void setEmp_id(int emp_id) {this.emp_id = emp_id;}public String getEmp_name() {return emp_name;}public void setEmp_name(String emp_name) {this.emp_name = emp_name;}public double getEmp_salary() {return emp_salary;}public void setEmp_salary(double emp_salary) {this.emp_salary = emp_salary;}public int getEmp_age() {return emp_age;}public void setEmp_age(int emp_age) {this.emp_age = emp_age;}@Overridepublic String toString() {return "empModel{" +"emp_id=" + emp_id +", emp_name='" + emp_name + '\'' +", emp_salary=" + emp_salary +", emp_age=" + emp_age +'}';}

5、创建EmpDao接口

 //查询所有数据List<empModel> findAll();//条件查询,根据emp_id查询数据empModel findById(int id);

6、创建EmpMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namesapce:可以理解成java实现类的全路径(包名+类名) -->
<!--全限定路径名的接口类:UserDao-->
<mapper namespace="EmpDao"><!-- id:方法名findAllparameterType:定义参数类型resultType:返回值类型User(就是普通的javabean)如果方法返回值是 list,在 resultType 中写 List 的泛型,mybatis其实是对jdbc的封装操作,跟以前的jdbc一样一行行读取数据,然后list接收--><!-- 查询所有数据 --><select id="findAll" resultType="EmpModel">select * from t_emp;</select><!-- 根据emp_id查询数据--><select id="findById" resultType="model.empModel" parameterType="int">select * from t_emp where emp_id = #{emp_id};</select>
</mapper>

7、测试类id

public static void main(String[] args) throws IOException{//1.通过Resources查找全局mybatis配置文件InputStream is = Resources.getResourceAsStream("mybatis.xml");//2.使用SqlSessionFactoryBuilder的使用工厂设计模式SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);//3.生成SqlSessionSqlSession ss=ssf.openSession();//4.找到mapper映射文件,找到sql方法,执行sql,相当于jdbc以前的PrepareStatement.executeQuery()//写入的是接口类名与方法名List<empModel> listUs=ss.selectList("dao.empDao.findAll");for (empModel us : listUs) {System.out.println(us.toString());}//第二个参数为传递的条件值empModel empModel = ss.selectOne("dao.empDao.findById",1);System.out.println(empModel);
//5.关闭资源ss.close();}

mybatis工具类封装(JDBCUtil)

public static SqlSession getSqlSession() throws Exception{InputStream is = Resources.getResourceAsStream("mybatis.xml");SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);SqlSession ss = ssf.openSession();return ss;}public static void close(SqlSession session){session.close();}

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

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

相关文章

Qt学习笔记(一)

信号与槽机制 本质上就是观察者模式&#xff1b; ------------------------------------------信号槽是Qt框架引以为豪的机制之一。所谓信号槽&#xff0c;实际就是观察者模式。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发…

导致苹果IPA应用APP打开提示“已到期”的原因及解决办法

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;有许多小伙伴们在使用iOS设备的时候&#xff0c;有时候可能会遇到打开某个IPA应用时出现“已到期”的提示&#xff0c;这种情况通常会发生在开发者证书过期、时间设置问题、重新签名错误等情况下。这一期…

力扣452 用最少数量的箭引爆气球 Java版本

文章目录 题目描述代码 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完…

李沐46_语义分割和数据集——自学笔记

语义分割 语义分割将图片中的每个像素分类到对应的类别。 实例分割&#xff08;目标检测的进化版本&#xff09; 如果有物体&#xff0c;会区别同一类的不同物体。 语义分割重要数据集&#xff1a;Pascal VOC2012 %matplotlib inline import os import torch import torch…

Java -- (part12)

一.权限修饰符 1.属性:用private ->封装思想 2.成员方法public ->便于调用 3.构造public ->便于new对象 二.final关键字 1.修饰类 a.格式 -- public final class 类名 b.特点:不能被继承 2.修饰方法 a.格式:修饰符 final 返回值类型 方法名(形参){} b.特点…

C++内存管理——new/delete、operator new/operator delete

内存管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof(int) * 4);int* pt…

c++ lambda表达式的使用方法

c lambda表达式的使用方法 C11引入了lambda表达式&#xff0c;它是一种轻量级的匿名函数&#xff0c;允许我们在需要函数的地方直接定义函数&#xff0c;而无需专门声明函数。lambda表达式的语法简洁&#xff0c;并且非常灵活&#xff0c;可以捕获外部变量&#xff0c;具有与普…

Mapper 编写的常用方式

第一种&#xff1a;接口实现类继承 SqlSessionDaoSupport&#xff1a; 使用此种方法需要编写mapper 接口&#xff0c;mapper 接口实现类、mapper.xml 文件。 1&#xff1a; 在 sqlMapConfig.xml 中配置 mapper.xml 的位置 <mappers><mapper resource"mapper.x…

技术速递|.NET 智能组件简介 – AI 驱动的 UI 控件

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang AI 的最新进展有望彻底改变我们与软件交互和使用软件的方式。然而&#xff0c;将 AI 功能集成到现有软件中可能面临一些挑战。因此&#xff0c;我们开发了新的 .NET 智能组件&#xff0c;这是一组真正有用的 AI 支持的 …

OCP-数据库中的小米SU7

oracle ocp ​数据库中的SU7 ​好看又好用 需要找工作和落户的快来

帮助中心最核心的内容,你都知道吗?

帮助中心&#xff0c;其实就是个解决问题的“百事通”。当你在使用某产品时&#xff0c;遇到了一些问题&#xff0c;就可以到帮助中心去查询相关的信息以解决问题。很多公司都会搭建帮助中心&#xff0c;那么&#xff0c;帮助中心的核心内容都有哪些呢&#xff1f;这就是今天我…

Chrome 中安装 Vue 插件 vue-devtools 的简易教程

Vue.js 是一种流行的 JavaScript 框架&#xff0c;用于构建交互式的用户界面。它提供了丰富的开发工具和插件&#xff0c;其中一个非常有用的插件就是 vue-devtools。vue-devtools 可以让开发者在 Chrome 浏览器中轻松调试和检查 Vue 组件的状态、事件和数据流。本篇教程将向你…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数&#xff1a;Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09; 前言相关介绍Softmax函数代码实例 Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09;Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限&#xff0c;难免出现错漏&am…

【yolo数据集合并方法】

yolo数据集合并方法 1.数据集容2.数据集合并 1.数据集容 包含训练集、验证集和测试集。 每一个数据集中包含图像文件夹和标签文件夹。 yaml文件中定义了配置参数&#xff0c;包括目标识别的class类别&#xff1a; 2.数据集合并 需要修改labels文件夹下txt文件class信息&…

记录shell编程中$1,$@等符号的含义

笔者最近老是遇到shell中的$相关的题目&#xff0c;于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容&#xff0c;所以并不会进行介绍&#xff0c;上图上表上代码&#xff0c;让机器说话&#xff0c;machine always right test.sh #/bin/bash echo $# $# echo …

gcc原理和使用

gcc gcc是什么 GCC&#xff0c;全称 GNU Compiler Collection&#xff08;GNU 编译器套件&#xff09;&#xff0c;是一套功能强大的编程语言编译器&#xff0c;由自由软件基金会&#xff08;Free Software Foundation, FSF&#xff09;作为GNU项目的一部分开发和维护。它最初…

宝塔使用笔记

1.配置ssl 验证方式&#xff1a;文件验证和dns验证都试一下 参考&#xff1a; https://app.applebyme.cn/cloud/https/23050.html

自定义类型: 联合体和枚举

本文索引 1. 联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算 2. 枚举类型2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 前言 : 书接上文, 下面我将继续详解C语言的剩下两个自定义类型: 联合体和枚举 个人主页…

【Linux】tcpdump P2 - 捕获和查看网络数据包

文章目录 7. 选项 -r8. 主机选项9. 逻辑运算符10. 关键字 net11. 关键字 ether12. 关键字 ip6总结 本文主要介绍了如何使用tcpdump来捕获和查看网络数据包。 7. 选项 -r 如果你已经走到了这一步并且写入了一个.pcap文件&#xff0c;你知道你不能使用简单的文本编辑器来读取文…