Mybatis(一)--基础教程

Mybatis内容整理(一) Mybatis入门及CURD 2、搭建数据库 3、编写核心配置文件,resource下创建mybatis-config.xml 4、编写工具类 5、创建实体类 6、编写mapper接口 7、编写接口对应的mapper.xml 8、测试 静态过滤问题 二、mybatis的CURD 1、查询 (1)接口UserMapper中增加对应方法 (2)UserMapper.xml增加相应的xml标签以及sql语句 备注: 备注: 类似的,根据密码和名字查询 方式一:直接在方法中传递参数 (1)在接口方法的参数前加 @Param属性 阅读详情

一、Mybatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、入门实例

2.1 环境搭建

引入数据库jar包及Mybatis的核心jar包和依赖包
在这里插入图片描述
2.2 数据库创建

CREATE DATABASE mybatisdemo;
USE mybatisdemo;
CREATE TABLE USER(
	id INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(10),
	sex VARCHAR(4),
	birthday DATE
);

INSERT INTO USER(username,sex,birthday) VALUES ('陈星星','男','1992/06/16');
INSERT INTO USER(username,sex,birthday) VALUES ('小逗逗','女','1993/11/25');

2.3 创建配置文件

在这里插入图片描述

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>
 	<!-- 环境配置 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3305/mybatisdemo" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 引入mapper文件的位置 -->
	<mappers>
		<mapper resource="sqlmap/User.xml"/>
	</mappers>
	
</configuration>

sqlmap package下新建User.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">
  <!-- 写sql语句的位置-->
  <!-- 命名空间 ,方便和其他JavaBean类的语句名称区分-->
  <mapper namespace="users">
  		<!-- 通过id查询用户 -->
  		<select id="findUserById" parameterType="Integer" resultType="cn.cf.domain.User">
  			select * from user where id = #{id}
  		</select>
  </mapper>

2.4 实体类创建

User.java

package cn.cf.domain;

import java.util.Date;

public class User {

	private Integer id;
	private String username;
	private String sex;
	private Date birthday;

	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 String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + "]";
	}

}

2.5 测试类创建

TestDemo.java

package cn.cf.test;

import java.io.IOException;
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 cn.cf.domain.User;

/**
 * 测试类
 * @author cf
 *
 */
public class TestDemo {
	
	@Test
	public void test() throws IOException {
		//1.加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//2.创建工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//3.创建sesion
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//4.执行sql语句
		User user = sqlSession.selectOne("users.findUserById", 1);
		
		System.out.println(user);
	}
}

结果如下:

在这里插入图片描述

三、其他CRUD语句

3.1 插入数据

User.xml

	<!-- 添加用户 -->
	<insert id="insertUser" parameterType="cn.cf.domain.User">
		insert into user(username, sex, birthday) 
		values(#{username}, #{sex}, #{birthday});
	</insert>

TestDemo.java

// 插入新用户
	@Test
	public void testInsertUser() throws Exception {
		// 1.加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// 2.创建工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 3.创建sesion
		SqlSession sqlSession = sqlSessionFactory.openSession();
		// 创建新的实体类实例
		User user = new User();
		user.setUsername("斯密");
		user.setSex("男");
		String date = "1900-10-02";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date birthday = sdf.parse(date);
		user.setBirthday(birthday);
		// 4.执行sql语句
		sqlSession.insert("users.insertUser", user);
		// 提交事务
		sqlSession.commit();
	}

3.2 修改数据

User.xml

	<!-- 修改数据 -->
	<update id="updateUserById" parameterType="cn.cf.domain.User">
		update user
		set username = #{username}, sex = #{sex}, birthday = #{birthday}
		where id = #{id}
	</update>

TestDemo.java

// 更新用户
	@Test
	public void testUpdateUser() throws Exception {
		// 1.加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// 2.创建工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 3.创建sesion
		SqlSession sqlSession = sqlSessionFactory.openSession();
		// 根据id查找user
		User user = sqlSession.selectOne("users.findUserById", 3);
		//修改user信息
		user.setUsername("亚当斯密");
		// 4.执行sql语句
		sqlSession.update("users.updateUserById", user);
		// 提交事务
		sqlSession.commit();
	}

3.3 删除数据

命名空间还是改回包名,上述,不改为包名出错了。

User.xml

	<!-- 删除数据 -->
	<delete id="deleteUserById" parameterType="Integer">
		delete from user where id = #{v}
	</delete>

TestDemo.java

// 删除用户
@Test
public void testDeleteUser() throws Exception {
	// 1.加载核心配置文件
	String resource = "sqlMapConfig.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	// 2.创建工厂
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	// 3.创建sesion
	SqlSession sqlSession = sqlSessionFactory.openSession();
	// 4.执行sql语句,删除用户
	sqlSession.delete("cn.cf.domain.User.deleteUserById", 3);
	// 提交事务
	sqlSession.commit();
}

结果:

在这里插入图片描述

可以看到SQL语句是写在配置文件中的,方便维护。结果集也是定义配置文件中。

SPEI计算避坑指南:gma中Distribution和FitMethod参数怎么选? 本文深入探讨了在SPEI计算中如何科学选择gma库中的Distribution和FitMethod参数,帮助研究者避开常见陷阱。详细分析了LogLogistic、Gamma和Pearson3三种分布的适用场景,以及LMoment与MLE拟合方法的优缺点,为气象干旱研究提供实用指南。 阅读详情

相关推荐

文献计量VOSviewer分析知网文献基本操作及实用技巧

本教程旨在为读者提供一个关于VOS viewer的初级使用指南。VOS viewer是一个强大的科学研究可视化工具,主要用于构建和可视化科学地图。它能够处理大规模的科研数据,包括文献引用、共引、共词、共作者等信息。无论你是科研人员,还是数据分析师,甚至是研究生,都能在这个教程中找到使用VOS viewer的有效方法。我们将一步步教你如何使用这个软件,以及如何利用它进行科研数据的可视化。

Jia_n的博客 8768

mybatis double String

mybatis中,SQL API的参数类型是double,数据库是varchar类型,发现用mybatis操作的时候,会损失精度,直接四舍五入。解决办法:方法一:把参数类型从double改成String。然后用Double.toString(XX)把double转成String。方法二:把数据库的字段类型改成decimal(13,2)...

weixin_41048746的博客 2804

广告推荐算法 - 学习笔记(持续更新中)

本篇博客,是我用来记录学习广告推荐算法的一些笔记和总结。王喆:"深度"学习计算广告计算广告系统的核心目标是通过数据、算法和技术,在合适的场景下,将最相关的广告精准推送给目标用户,同时实现广告主媒体平台和用户之间的多方利益最大化。广告主:需求方核心目标:通过精准投放广告,最大化转化(如点击、购买)并控制成本,提升投资回报率(ROI)。关键行为:广告创建,定向设置,预算与出价策略,效果监控媒体平台:供给方核心目标:最大化广告收入,同时保持用户体验以避免用户流失。

qq_39748832的博客 2199

使用 MyBatis 实体类里的 Double 类型查询不到值

使用 MyBatis 实体类里的 Double 类型查询不到值,因为驼峰映射,把resultType改成resuleMap。

qq_43881663的博客 2676

保姆级教程:用LoRA微调Chinese-Mistral-7B模型,并一键部署到Ollama(附完整代码)

本文提供了一份详细的LoRA微调Chinese-Mistral-7B模型的保姆级教程,涵盖环境配置、数据预处理、微调实战、模型量化及Ollama部署全流程。通过实战案例和完整代码,帮助开发者快速构建专属中文大模型,适用于医疗、法律等垂直领域。

weixin_30369041的博客 250

Windows版MySQL8.4.2LTS解压直用(下载免安装-绿色-项目打包直接使用-含卸载)

安装前运行微软常用运行库全集(也可能称为依赖)关于MySQL8中相关参数配置,可通过。选择8.5.2LTS长期服务版。选中密码,右键会直接复制。

xzzteach的博客 1440

mybatis 返回Integer、Double、String等类型的数据

在使用mybatis的过程中会遇到只返回单独数据类型的问题会用到resultType。 //返回Integer select id="getSpeedByLinkId" parameterType="java.lang.String" resultType="Integer"> SELECT speed from dws_tfc_state_speed_link_last_r

fenfenguai的专栏 8万+

SAP MTS计划策略40实战:如何配置‘带最终组装的计划‘提升定制化生产效率

本文深入解析SAP计划策略40(带最终组装的计划)的核心机制与实战配置。该策略通过“需求消耗”与“组装灵活性”,有效融合按库存生产(MTS)与按订单生产(MTO)的优势,帮助制造企业在保持通用组件库存稳定的同时,快速响应客户的定制化需求,从而提升生产效率与客户满意度。

ruby5的博客 968

mybatis学习文档

mybatis-9.28 环境: JDK1.8 mysql 8.0.16 maven3.6.1 IDEA 回顾: JDBC mysql jave基础 Maven junit 1.简介 1.1 什么是mybatis ​ mybatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。 MyBatis 是一款优秀的持久层框架 支持自定义 SQL、存储过程以及高级映射 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作 MyBatis 可

weixin_47356044的博客 3312

STC8H8K64U ADC采样实战:从蜂鸣器控制到电压测量(附完整代码)

本文以STC8H8K64U单片机为核心,通过两个实战案例详细讲解ADC采样的应用。首先介绍如何利用ADC采样值动态控制蜂鸣器响度,实现模拟PWM效果;其次深入探讨高精度外部电压测量的方法,包括硬件连接、两点校准技巧以及软件滤波,旨在帮助开发者从理论到实践全面掌握ADC功能。

weixin_29159441的博客 562

EB配置输入捕获ICU模块----基于S32K3

基于S32K311芯片,EB配置ICU输入捕获(Emios 和Siul)

weixin_43586400的博客 1772

Mybatis基础教程(一)

java web数据库连接时很平常的事,而我们最开始使用的也就是jdbc,使用jdbc连接多个数据库我们会发现代码的大量冗余,于是就有了各种框架。何为框架,框架就是对现有代码的合理封装,便于后续重复调用,减少代码冗余,提高开发效率。 下面开始介绍一种数据库操作框架Mybatis public interface AccountDao{ public void insertAccount(Ac

难不难的博客 699

一文搞懂自适应激光控制技术,开启光学新时代

自适应激光控制技术作为现代光学领域的关键技术,以其独特的原理和高效的工作机制,在科研、工业等众多领域展现出了巨大的应用价值。通过对激光波前的实时测量与补偿,它成功克服了激光在传输和应用过程中面临的诸多挑战,显著提升了激光的光束质量和应用效果。在科研领域,它助力天文观测突破大气湍流的限制,让我们得以更清晰地窥探宇宙的奥秘;在激光核聚变研究中,为实现高效的核聚变反应提供了关键支持,为解决能源问题带来了新的希望。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2529

Mybatis基础教程及使用细节

本篇主要对Mybatis基础使用进行总结,包括Mybatis的基础操作,使用注解进行增删改查的练习;详细介绍xml映射文件的配置过程并且通过配置xml映射文件使用动态sql语句进行条件查询;为了简化java开发提高效率,介绍一下依赖,例如lombok依赖等。后续会对Mybatisplus进行总结。

m0_57957187的博客 2441

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

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

SpringBoot整合MyBatis Plus及MyBatis Plus使用基础教程

SpringBoot整合MyBatis Plus及MyBatis Plus使用基础教程 对于MyBatis Plus的简介和好处我也不做多的介绍请看官方文档:https://mp.baomidou.com/guide/quick-start.html 。直奔主题 SpringBoot整合MyBatis Plus及MyBatis Plus使用基础教程,嘿嘿! lombox安装idea中File --...

weixin_44490222的博客 1474

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

新人一看就懂:Spring Boot+Spring mvc+Mybatis的基础框架demo

Spring Boot的设计目的是来简化新Spring应用的初始搭建以及开发过程,大大减少了代码量,通过这篇文章你可以清楚的看到。这是一个基于Spring Boot的简单demo,希望读者可以通过这篇文章大概能看懂这一个简单的框架搭建。后续我会陆续更新,微服务架构(Spring Boot、Spring Cloud)、分布式架构(Dobbo+Zookeeper)、大数据架构以及源码解析等相关的文章,感兴趣的话可以关注一下。

程序员云帆哥的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

springboot整合mybatis(一)入门

mybatis

xiatianit的博客 3026

一,初始 MyBatis-Plus

学习 MyBatis -Plus 之前,我们可以先来简单的,稍微的,回顾一下,MyBatis 框架的一些问题:这里只是简单的回顾,关于MyBatis 的更多详细内容大家可以移步至:✏️✏️✏️MyBatis_ChinaRainbowSea的博客-优快云博客我们来简单思考一下,MyBatis 框架的开发效率怎么样?开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手。Mapper 接口提供一个抽象方法。Mapper 接口对应的映射配置文件提供对应的标签和SQL语句。

weixin_61635597的博客 2236

MyBatis框架基础教程

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。SQL注入问题:MyBatis使用#{}可以有效防止SQL注入,${}有注入风险。MyBatis也支持使用注解代替XML配置:​​​​​​。二级缓存:Mapper级别的缓存,需要手动配置开启。2. 创建Mapper接口​​​​​​​。4. 使用MyBatis​​​​​​​。1. 创建实体类​​​​​​​。1. 动态SQL​​​​​​​。2. 结果映射​​​​​​​。3. 关联查询​​​​​​​。解除SQL与程序代码的耦合。

IT_1024_的博客 532

Mybatis(一):Mybatis是什么

一、概述 Mybatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身。 我们原来使用JDBC操作数据库,需要手动的写代码去注册驱动、获取connection、获取statement等等,现在Mybaits帮助我们把这些事情做了,我们只需要关注我们的业务sql即可,这样可以提高我们的开发效率。 MyBatis属于半自动的ORM框架 二、Mybatis架构 SqlMapConfig.xml SqlMapConfig.xml文件是M...

qq_35382207的博客 1万+

吃透Mybatis源码-Mybatis初始化(一)

来来来,给俏如来扎起。感谢老铁们对俏如来的支持,2021一路有你,2022我们继续加油!你的肯定是我最大的动力 博主在参加博客之星评比,点击链接 , https://bbs.youkuaiyun.com/topics/603957267 疯狂打Call!五星好评 ⭐⭐⭐⭐⭐ 感谢。 前言 Mybatis是Java 项目开发使用率非常高的一款持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或

墨家巨子@俏如来 6143

一、Mybatis 简介

● 简介 ● 持久层框架对比 ● 快速入门(基于Mybatis3方式)

走在bug的路上 6677

MyBatis学习一

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 几乎消除了 JDBC 代码和参数的手动设置以及 结果集的检索。MyBatis 使用简单的 XML 或注解进行配置,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射到数据库中的记录。与其他 ORM 框架不同,MyBatis 并没有将 Java 对象与数据库表关联起来,而是将方法与 SQL 语句关联。

wangqiang996的博客 1100

Mybatis(一)Mybatis的基本使用

接口绑定、动态SQL

HK的博客 5746

Mybatis基础教程

MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。

2301_77072336的博客 740

mybatis基础教程

mybatis xml配置文件 mybatis-config.xml配置代码:(先导jar包) <?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> <!

qq_57404736的博客 288
上一篇: Oracle(三)--数据库建表操作
下一篇: Mybatis(二)--Mapper代理开发
Double____C
博客等级 码龄8年 92粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值