我的mybatis入门

MyBatis入门到精通——入门篇 目录一、什么是 MyBatis?二、入门案例(1)创建maven项目(2)引入依赖包(3)创建数据库执行sql脚本三、入门程序源码(1)User.java(2)UserMapper.java(3)MybatisUtils.java(4)UserMapperTest.java(6)UserMapper.xml(7)mybatis-config.xml(8)pom.xml 四、程序单元测试结果五、程序完整源码获取在此之前,需要提前配置好java环境变量和maven环境变量。 (3)创建数据库执行sql 阅读详情

我对mybatis的理解

mybatis是干什么的?

Mybatis是一个框架,对jdbc的数据库操作过程进行封装,开发者不必处理注册驱动、创建Connection等操作,只关注sql即可

我理解的mybatis工作原理

通过xml将要执行的statement配置起来,通过java对象(UserMapper.java)和statement(UserMapper.xml)中的sql进行映射生成最终执行的sql语句,最终由mybatis执行sql,并将结果映射成java对象并返回

mybatis入门程序步骤

创建数据库,建表略

新建java项目,引入jar包,结果如图导入jar包后目录图

在src下新建jdbc.properties文件,配置连接数据库信息,全局配置,方便统一管理

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=111111

在src下新建log4j.properties文件,配置日志打印信息

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

在src下新建sqlMapConfig.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>
	<!-- 引入jdbc.properties,可以统一管理配置信息 -->
	<properties resource="jdbc.properties" />

	<!-- 别名 -->
	<typeAliases>
		<!-- bean对象所在目录,配置过后UserMapper.xml中resultType可只写类名,不必写类的全路径 -->
		<package name="com.syw.bean" />
	</typeAliases>

	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<!-- 如果使用mapper,可以新建一个文件夹,单独放xml文件,通过resource属性引入。 
		com.syw.mapper里边只放同名的java文件,但是随着mapper文件的增多,mappers会很多行 -->
		<!-- <mapper resource="sqlMapper/UserMapper"/> -->
		<!-- 可以指定到包目录下,一行代码搞定 -->
		<package name="com.syw.mapper" />
	</mappers>
</configuration>

创建bean对象

package com.syw.bean;

public class User {
	private int id;
	private String name;
	private int age;

	//get set toString方法略
}

创建UserMapper

package com.syw.mapper;

import com.syw.bean.User;

public interface UserMapper {
//	遵循4个原则
//	1.返回类型与UserMapper.xml中一致
//	2.参数类型与UserMapper.xml中一致
//	3.方法名与UserMapper.xml中id一致
//	4.UserMapper.xml中namespace与接口路径一致
	public User queryUserById(Integer id);
}

创建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:命名空间,用于隔离sql,当有多个mapper.xml时,可以通过命名空间找到对应的方法 -->
<mapper namespace="com.syw.mapper.UserMapper">
	<!-- resultType在sqlMapConfig.xml未配置别名之前,需要写全路径的名称。配置过别名之后,写成类名(不区分大小写) -->
	<select id="queryUserById" parameterType="Integer" resultType="User">
		select * from user2 where id = #{value}
	</select>
	
	<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
	<!-- 可以写#{value}  java文件里边写"%王%" -->
	<!-- 可以写%${value}%  java文件里边写"王" -->
	<select id="queryMohuUserById" parameterType="String" resultType="User">
		select * from user2 where name LIKE '%${value}%'
	</select>
	
	<!-- 新增用户 -->
	<insert id="addUser" parameterType="User" >
		insert into user2 (name,age) values (#{name},#{age})
	</insert>
	
	<!-- 修改用户 -->
	<update id="updateUser" parameterType="User" >
		update user2 set name=#{name} where id = #{id}
	</update>
	
	<!-- 删除用户 -->
	<delete id="deleteUser" parameterType="Integer">
		delete from user2 where id = #{value}
	</delete>
</mapper>

使用测试类,测试mapper

package com.syw.test;

import java.io.InputStream;

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 org.junit.Test;

import com.syw.bean.User;
import com.syw.mapper.UserMapper;

/**
 * 测试Mapper的动态代理功能
 * 
 * @author Administrator
 *
 */
public class TestMapper {
	/**
	 * 查询单个
	 */
	@Test
	public void selectOneMybatis() throws Exception {
		// 基本操作
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		// sqlSession获取Mapper
		// 要求UserMapper.java和UserMapper.xml必须同名且在同一包内
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		User user = mapper.queryUserById(1);
		System.out.print(user);
	}
}

对比未使用mapper方式的查询方法

package com.syw.test;

import java.io.InputStream;
import java.util.List;

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 org.junit.Test;

import com.syw.bean.User;

public class TestMybatis {

	/**
	 * 查询单个
	 * */
	@Test
	public void selectOneMybatis() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//user.queryUserById中user是UserMapper.xml中命名空间的名字,如果不使用UserMapper.java的方式,可以任意命名,但是如果使用了UserMapper.java的方式,命名空间中的名字必须是UserMapper.java的全路径名字
		User user = sqlSession.selectOne("user.queryUserById", 3);
		System.out.print(user);
	}
	
	/**
	 * 模糊查询
	 * */
	@Test
	public void selectmohuMybatis() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		List<User> user = sqlSession.selectList("user.queryMohuUserById", "三");
		for(int i=0;i<user.size();i++){
			System.out.print(user.get(i).getName());
		}
		
	}
	
	/**
	 * 新增用户
	 * */
	@Test
	public void addUserMybatis() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user=new User();
		user.setId(6);
		user.setAge(30);
		user.setName("张三丰");
		sqlSession.insert("user.addUser", user);
		// 需要进行事务提交
		sqlSession.commit();
		// 7. 释放资源
		sqlSession.close();
	}
	
	/**
	 * 修改用户
	 * */
	@Test
	public void updateUserMybatis() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user=new User();
		user.setId(6);
		user.setAge(20);
		user.setName("张四丰");
		sqlSession.update("user.updateUser", user);
		// 需要进行事务提交
		sqlSession.commit();
		// 7. 释放资源
		sqlSession.close();
	}
	
	/**
	 * 删除用户
	 * */
	@Test
	public void deleteUserMybatis() throws Exception {
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		sqlSession.delete("user.deleteUser", 6);
		// 需要进行事务提交
		sqlSession.commit();
		// 7. 释放资源
		sqlSession.close();
	}
}
开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式 电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。 阅读详情

相关推荐

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 444

【MyBatis】入门程序

详解编写mybatis入门程序的主要步骤,以及junit、logback和工具类 SqlSessionUtil 的封装

August_._的博客 1182

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 819

Mybatis入门

在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执行结果。增删改操作:返回受影响行数查询操作:返回结果集(查询的结果)我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库,现在主流的方式是:Mybatis。什么是MyBatis?MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。

qq_63763836的博客 1095

Gazebo仿真UUV水下机器人:从环境搭建到避障算法实战

本文详细介绍了使用Gazebo仿真平台进行UUV水下机器人开发的全流程,涵盖从环境搭建、uuv_simulator配置、传感器集成到核心避障算法实战。通过搭建水下仿真实验室并实现基于激光雷达数据的反应式避障算法,为水下机器人算法验证与开发提供了高效、低成本的解决方案。

weixin_28840591的博客 263

别再只会调速度了!用STM32的定时器中断精准控制伺服电机转角(避坑指南)

本文详细介绍了如何利用STM32的定时器中断和PWM输出实现伺服电机的精准转角控制,避免常见的速度控制误区。通过硬件配置、脉冲计数逻辑和优化技巧的实战讲解,帮助开发者掌握高精度位置控制方法,适用于工业自动化和机器人控制等场景。

weixin_42531163的博客 414

MyBatis快速入门第二讲——MyBatis的快速入门

MyBatis框架的架构MyBatis框架的架构如下图: 下面作简要概述: SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句,此文件需要在SqlMapConfig.xml中加载。 通过mybatis环境等配置信息构造SqlSessionFactory(即会

李阿昀的博客 1万+

Win 11 Fastboot驱动的详细安装教程

Fastboot驱动的详细安装教程

水w的博客 1万+

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择 项目介绍 MyBatis实战是一个专注于MyBatis技术学习的开源项目,旨在通过丰富的实战示例代码,帮助开发者从零开始掌握MyBatis的核心概念与高级用法。项目中的示例代码主要来源于刘增辉老师所著的《MyBatis从入门到精通》一书,经过精心整理与实践,确保每一个示例都能帮助开发者深入理解MyBatis的各个方面。 项目技术...

gitblog_00834的博客 1111

halcon知识:常见三种模板匹配方法总结

halcon的三种模板匹配方法总结,halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类 本文只对形状匹配做简要说明和补充: Shape_Based匹配方法: 上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。 先要补充点知识:形状匹配常见的有四种情况 一般形状匹配模板shape_model、线性变

gongdiwudu的专栏 4万+

【Altium designer】如何添加过孔阵列

按下图1指示,执行【Tool】菜单栏下【Via Stitching/Shielding】选项卡中的【Add Stitching to Net...】选项 图1 “添加过孔阵列”选项 点击【Add Stitching to Net...】选项后,会跳出一个窗口,让我们设置过孔阵列的参数信息,如下图2所示。 图2 过孔阵列参数设置 过孔阵列区域:勾选该选项框,即可绘制多边形区域; 过孔内径与焊盘直径:比如内径 【Hole Size】设为12mil,焊盘直径【Diameter】设为24mil; .

夜半少年的博客 2万+

【Mybatis】Mybatis入門

1-1什么是MyBatis a.MyBatis是对JDBC的封装 b.将SQL语句放在映射文件中(XML) c.自动将输入参数映射到SQL语句的动态参数中 d.自动将SQL语句执行的结果映射成Java对象 1-2MyBatis的应用 (0)准备工作,创建学生表,添加数据 CREATE TABLE tbl_student(id VARCHAR(32),NAME VARCHAR(32),age INT); INSERT INTO tbl_student VALUE("..

keeper42的博客 188

PMP–一、二、三模–分类–13.干系人管理

A:确认是否已制定沟通管理计划,使业务干系人认识到项目的成功之处。B:让业务干系人参加冲刺回顾会议。C:与发起人和关键干系人一起确定产品待办事项列表中的优先要务,以便交付商业利益。D:为关键干系人开展收尾调研。C。

stqer的博客 1417

Mybatis入门及使用

MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。在上面我们提到了两个词:一个是持久层,另一个是框架。持久层:指的是就是数据访问层(dao),是用来操作数据库的。框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。

2202_75483664的博客 1971

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mybatis入门

Mybatis入门 亿图作品思维图(本人作)

神韵 492

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MyBatis详解(一):入门程序

一、对原生态jdbc程序中问题总结1.1、原始jdbc程序步骤:(1) 注册驱动JDBC类库向DriverManager注册数据库驱动·(2)建立连接(url、username、password)使用DriverManager提供的getConnection()方法连接到数据库(3)创建SQL语句,获取语句执行对象编写SQL语句,并建立SQL语句执行对象(4)执行语句执行SQL语句,并将结果集合返回到ResultSet中(5)处理结果(6)释放资源(注意关闭的顺序)

2501_90472645的博客 1848

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mybatis的入门使用

mybatis generator的使用 准备工作: 可编辑xml文件的编辑器(懒人直接用myeclipse打开就行) mybatis generator core 包(mybatis-generator-core-1.3.2.jar) jdbc驱动包(mysql-connector-java-5.1.40-bin.jar) 一个空的src文件夹 结构如图(根目录D:/mybatis

qq499889810的博客 450

Mybatis 配置Mybatis 二、MyBatis的入门程序

6.编写主配置文件,在resources目录下创建SqlMapConfig.xml的配置文件(其实名称可以任意),导入对应的约束,编写主配置文件。编写UserMapper.xml的配置文件,导入约束文件。引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)4.编写UserMapper的接口和方法(就是咱们以前的UserDao接口)3.编写User的实现类,属性尽量使用包装类型,具体的代码如下。引入MyBatis的3.4.5的版本的坐标。

best_virtuoso的博客 1029

MyBatis框架的入门

MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想。

qq_63964907的博客 901

MyBatis-什么是MyBatis?以及MyBatis的快速入门。

MyBatis-什么是MyBatis?以及MyBatis的快速入门。

m0_63949203的博客 1072

MyBatis 入门

MyBatis基础

2301_80313139的博客 1395

跟老杜从零学MyBatis框架【二】MyBatis入门程序

注意2:CarMapper.xml文件的名字不是固定的。可以使用其它名字。注意3:CarMapper.xml文件的位置也是随意的。这里选择放在resources根下,相当于放到了类的根路径下。注意4:将CarMapper.xml文件路径配置到mybatis-config.xml:

2301_76637874的博客 189

【MyBatis】MyBatis 快速入门

MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发。最初,MyBatis 是 Apache 的开源项目 iBatis,2010 年该项目迁移到 Google Code,并改名为 MyBatis。

zzy_NIC的博客 669
上一篇: 微信小程序scrollview不能横向滚动问题
下一篇: 我的mybatis入门(二)
ForMuHan
博客等级 码龄10年 6粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值