技术框架对MyBatis的入门学习

news/2024/11/29 20:51:47/文章来源:https://www.cnblogs.com/BingBing-8888/p/18577516

MyBatis快速入门

在回顾JDBC时,我们已经创建有Maven工程,而且在pom.xml中也已经导入 mysql 依赖包,这里就直接在原有工程上搭建MyBatis环境,以及使用MyBatis来实现JDBC查询user的操作流程。

MyBatis环境搭建

首先,在 Maven 项目的 pom.xml 中添加 MyBatis 的依赖 jar 包

<!--导入 mybatis 依赖包-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version>
</dependency>          

注:如果对 Maven 搞不清楚的同学,可以看我写的关于 Maven 使用教程的博客文章。

然后,在Maven工程的 resources 目录下创建 MyBatis 环境配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 数据库配置 --><environments default="development"><environment id="development"><!-- 事务管理器,JDBC类型的事务管理器 --><transactionManager type="JDBC" /><!-- 数据源,池类型的数据源 --><dataSource type="POOLED"><!--设置数据库驱动 --><property name="driver" value="com.mysql.jdbc.Driver"/><!--设置数据库url地址--><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><!--设置数据库用户名--><property name="username" value="填写数据库的用户名"/><!--设置数据库密码--><property name="password" value="填写数据库密码"/></dataSource></environment></environments></configuration>

最后,在Maven工程的main/java下创建MyBatisDemo.java文件,用于测试MyBatis环境是否搭建OK

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;/*** @desc MyBatis测试* @date 2020/6/18 上午11:34*/
public class MyBatisDemo {public static void main(String[] args) throws Exception {// 指定mybatis环境配置文件String resource = "mybatis-config.xml";// 读取配置文件InputStream inputStream = Resources.getResourceAsStream(resource);// 构建sqlSessionFactorySqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);// 获取sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();System.out.println("MyBatis 环境搭建 OK ");}

执行MyBatisDeme后结果如下:

注意:如果运行出现异常错误,那么可能是 jar 包导入有问题,或者 mybatis-config.xml 编写有语法错误,相信认真核查一下就可以解决。

MyBatis查询操作

首先,在 Maven 工程的main/java/mapper下创建 UserMapper.java 文件,该文件是user的映射器接口,如下:

package mapper;
import entity.UserEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** @desc User映射器接口* @date 2020/6/19 上午8:59*/
public interface UserMapper {/*** 根据年龄查询用户信息* @param age 年龄* @return user 用户实体集合*/public List<UserEntity> selectUserByAge(int age);
}

接着,在 Maven 工程的 resources/mappers下创建 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"><!-- namespace表示命名空间,填写之前创建的 UserMapp.java 接口包路径 -->
<mapper namespace="mapper.UserMapper"><!--结果集映射--><resultMap id="userResultMap" type="entity.UserEntity"><!-- propery表示UserEntity属性名 column表示tb_user表的字段名--><id property="id" column="id" /><result property="userName" column="userName" /><result property="password" column="password" /><result property="name" column="name" /><result property="age" column="age" /><result property="sex" column="sex" /><result property="birthday" column="birthday" /><result property="created" column="created" /><result property="updated" column="updated" /></resultMap><!--select查询语句--><select id="selectUserByAge" resultMap="userResultMap">select * from tb_user where age > #{age}</select>
</mapper>

然后,在 Maven 工程的 resources/mybatis-config.xml 配置文件中添加 UserMapper.xml 映射文件的路径,如下:

<configuration><!-- 数据库配置 --><environments default="development">...</environments><!--配置映射文件路径--><mappers><mapper resource="mappers/UserMapper.xml" /></mappers>
</configuration>

最后,在 Maven 工程的 main/java/MyBatisDemo.java 文件中添加代码执行查询操作,如下:

import entity.UserEntity;
import mapper.UserMapper;
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;/*** @author benjamin.xu* @desc MyBatis测试* @date 2020/6/18 上午11:34*/
public class MyBatisDemo {public static void main(String[] args) throws Exception {// 指定mybatis环境配置文件String resource = "mybatis-config.xml";// 读取配置文件InputStream inputStream = Resources.getResourceAsStream(resource);// 构建sqlSessionFactorySqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);// 获取sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 获取UserMapper对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 执行查询操作List<UserEntity> userEntities = userMapper.selectUserByAge(20);System.out.println(userEntities);//关闭sqlSessionsqlSession.close();}
}

执行 MyBatisDemo 结果如下:

[entity.UserEntity{id=1, userName='zs', password='123456', name='张三', age=22, sex=1, birthday=Sun Sep 02 00:00:00 IRKST 1990, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}, entity.UserEntity{id=2, userName='ls', password='123456', name='李四', age=24, sex=1, birthday=Sun Sep 05 00:00:00 IRKST 1993, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}]Process finished with exit code 0

MyBatis操作步骤总结

通过上述操作,我们可以总结出 MyBatis 的操作步骤如下:

  1. 创建 UserMapper.java 映射器接口
  2. 创建 UserMapper.xml 映射文件
  3. 在 mybatis-config.xml 环境配置文件中添加 UserMapper.xml 映射文件路径
  4. 在 MyBatisDemo中编写MyBatis测试代码
    • 加载 mybatis-config.xml MyBatis环境配置文件
    • 创建 SqlSessionFactory 工厂对象
    • 通过 SqlSessionFactory 工厂创建 SqlSession 对象
    • 通过 SqlSession 创建 UserMapper接口对象
    • 调用 UserMapper 接口方法执行查询操作
    • 调用SqlSession.commit()提交事务(查询不需要)
    • 关闭 SqlSession 会话

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

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

相关文章

基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)for t=1:Iterstfor i=1:Numif xwoa(i,1)<0xwoa(i,1)=0.1; endif xwoa(i,2)<0xwoa(i,2)=0.001; end%目标函数更新[pa(i)] = f…

安装苹果系统台式电脑如何正确选购装机硬件

结合自己的一些装机经验和网上查阅的相关资料,给大家安利一波 “ 如何正确选配黑苹果硬件 ” 方面的相关知识。文中配置推介表中的配置都是目前在安装黑苹果上比较常见且稳定的机型,并且EFI引导文件都有现成的,在各大资源网站中也比较好找,能帮助你 快速简单的吃上黑苹果。…

JavaWeb知识点总结

JavaWeb知识点总结和学习笔记目录JavaWebjunit黑盒测试白盒测试注解所需jar包反射作用获取Class对象的方式class对象功能应用注解作用预定义的注解自定义注解解析注解动态代理ProxyMaven作用概述仓库maven依赖仓库:IDEA集成Maven高级功能JDBC概念本质快速入门各个对象抽取JDBC工…

电话号码的字母序列

题目描述 输入一个仅包含数字 2-9 的字符串,输出所有它能表示的字母序列。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入 输入一个包含数字 2-9 的字符串,长度不超过6。 输出 按字典序输出所有能表示的字母序列,每行输出一个。 输入样例 23输出…

IDEA-idea设置导航栏字体大小代码编辑区字体大小

一、设置导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font二、设置代码编辑区字体大小 Setting - Font - Size

Pycharm-Pycharm设置左侧导航栏字体大小和代码编辑区字体大小

一、左侧导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font - Size二、代码编辑区字体大小

DevEco Studio 实战第一节:字符串拼接与组件构建

DevEco Studio 实战第一节:字符串拼接与组件构建 引言 在现代软件开发中,TypeScript 提供了强类型的优势,而 DevEco Studio 作为华为推出的开发集成环境,提供了便捷的代码管理和版本控制功能。本文将通过一个简单的示例,介绍如何在 TypeScript 和 DevEco Studio 中进行字符…

WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗

在平时使用win11电脑时候偶发WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗的问题,一般重启后恢复正常,还有一种方法,打开任务管理器,找到Windows资源管理器选择重新启动,之后就恢复正常啦!代码成就万世基积沙镇海 梦想永在凌云意意气风发

【泛微E9】移动应用将页面按钮置灰

效果如下:实现方法: $load(function() {setTimeout(function() {var kpbm = $f("kpbm").val();var zcbm = $f("zcbm").val();const date = new Date();const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, 0); // 月…

超详细 HarmonyOS 开发教程之开发环境搭建指南

HarmonyOS开发环境搭建指南:DevEco Studio安装教程 一、系统要求 操作系统:Windows 10 64位或更高版本 RAM:至少8GB,推荐16GB 硬盘空间:至少10GB可用空间 处理器:Intel Core i5或更高配置 二、安装步骤 1. 下载DevEco Studio 2. 访问华为开发者联盟官网:https://develop…

用SS8050三极管实现一个开关功能,并测试集电极工作电流

测试一个简单的三极管开关电路原理图如图用一个SS8050三极管当作开关,控制小灯泡的亮灭,可调电阻调节偏置电压的大小来控制基极电流,分别接上A1和A2来测量基极电流和集电极电流实际工作时,电阻要调到10k,此时A1=406uA,A2=120.8mA三极管的放大倍数测量值为295,以上计算得…

基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

1.算法仿真效果vivado2019.2仿真结果如下:设置SNR=20db设置SNR=15db设置SNR=10db2.算法涉及理论知识概要在现代通信系统中,数字调制技术被广泛应用于无线通信、卫星通信以及有线通信等领域。其中,振幅键控(Amplitude Shift Keying, ASK)是一种简单的数字调制方式,通过改变…