坚持看完!搞懂Java持久层框架mybatis简单增删改查?没有问题!

Java持久层框架:MyBatis介绍 MyBatis介绍 阅读详情

在这里插入图片描述

mybatis简单的增删改查

select语句

  • id : 就是对应的namespace中的方法名;

  • resultType:Sql语句执行的返回值!

  • parameterType : 参数类型!

特别注意:mybatis配置文件中不能出现中文注释!

1、在编写接口,跟据ID查询用户:

public interface UserDao {
    List<User> getUserList();

    //根据ID查询用户
    User getUserById(int id);

2、编写对应的mapper中的sql语句:

<--根据ID查询用户,参数为int,所以parameterType="int"-->
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
    select * from mybatis.user where id = #{id}
</select>

3、在测试类添加测试方法,然后测试:

    //查
    @Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //查询ID为1的用户
        User userById = mapper.getUserById(1);
        System.out.println(userById);

        //关闭SqlSession
        sqlSession.close();
    }

模糊查询

1、Java代码执行的时候,传递通配符 % %

List<User> userLike = mapper.getUserLike("%李%");

如图:
image

###2、在sql拼接中使用通配符!

select * from mybatis.user where name like "%"#{value}"%"

如图:
image

Insert语句

1、编写接口:

//insert增加一个用户
int addUser(User user);

2、编写对应的mapper中的sql语句:
<!--对象中的属性,可以直接取出来-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
    insert into mybatis.user (id,name ,pwd) value (#{id},#{name},#{pwd});
</insert>

3、编写测试类:

    //注意:增删改需要提交事务
    //增
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //插入一个ID为4,用户名为鬼谷子,密码为123465的用户
        int res = mapper.addUser(new User(4, "鬼谷子", "123465"));
        if (res>0){
            System.out.println("插入成功!");
        }
        //提交事务
        sqlSession.commit();
        //关闭SqlSession
        sqlSession.close();

    }

update使用

1、编写接口:

//修改用户
int updateUser(User user);

2、编写对应的mapper中的sql语句:

<update id="updateUser" parameterType="com.kuang.pojo.User">
    update mybatis.user set name=#{name},pwd=#{pwd}  where id = #{id} ;
</update>

3、编写测试类:

    //注意:增删改需要提交事务
    //改
    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //为ID是1的用户修改用户名为鬼谷仙生,密码为654321
        mapper.updateUser(new User(1,"鬼谷仙生","654321"));
        //提交事务
        sqlSession.commit();
        //关闭SqlSession
        sqlSession.close();
    }

Delete使用

1、编写接口:

//删除一个用户
int deleteUser(int id);

2、编写对应的mapper中的sql语句:

<delete id="deleteUser" parameterType="int">
    delete from mybatis.user where id = #{id};
</delete>

3、编写测试类:

    //注意:增删改需要提交事务
    //删
    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //删除ID为4的用户
        mapper.deleteUser(4);
        //提交事务
        sqlSession.commit();
        System.out.println("删除成功!");
        //关闭SqlSession
        sqlSession.close();
    }

Map的使用

实体类或者数据库中的表,字段或者参数过多,我们可以使用Map!

1、编写Map接口

//万能的Map
int addUser2(Map<String,Object> map);

2、编写对应的mapper中的sql语句:

<!--对象中的属性,可以直接取出来    传递map的key-->
<insert id="addUser2" parameterType="map">
    insert into mybatis.user (id, pwd) values (#{userid},#{passWord});
</insert>

3、编写测试类:

    //万能Map
    //增
    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String,Object> map = new HashMap<String, Object>();

        map.put("userid",4);
        map.put("passWord","123456");

        mapper.addUser2(map);

        sqlSession.commit();
        sqlSession.close();
    }

注意:

Map传递参数,直接在sql中取出key即可! 【parameterType=“map”】
对象传递参数,直接在sql中取对象的属性即可!【parameterType=“Object”】
只有一个基本类型参数的情况下,可以直接在sql中取到!
多个参数用Map,或者注解!

解决属性名和字段名不一致的问题

数据库中的字段跟类中的字段名字不一样,导致操作数据库出错!

解决方法一:在sql语句中起别名

<select id="getUserById" resultType="com.kuang.pojo.User">
    select id,name,pwd as password from mybatis.user where id = #{id}
</select>

解决方法二:使用resultMap结果集映射

<!--结果集映射-->
<resultMap id="UserMap" type="User">
    <!--column数据库中的字段,property实体类中的属性-->
    <result column="id" property="id"/>
    <result column="name" property="name"/>
    <result column="pwd" property="password"/>
</resultMap>

<select id="getUserById" resultMap="UserMap">
    select * from mybatis.user where id = #{id}
</select>

分类: [SSM框架]

在这里插入图片描述

MyBatis持久层框架详细解读:MyBatis快速入门篇 JavaEE 企业级 Java 项目中的经典三层架构为表现层,业务层和持久层,使用Java 代码操作数据库属于持久层内容,而 MyBatis 对 JDBC 代码进行了封装,作为一款优秀的持久层框架,专门用于简化JDBC开发。 阅读详情

相关推荐

【MyBatis持久层框架】配置文件实现增删改查实战案例(下)

MyBatis 支持自定义 sql,存储过程以及高级映射,它几乎免除了所有的 JBDC 代码以及设置参数和获取结果集的工作。解决了使用 JBDC 基础性的代码操作数据库时面临的 Java 代码的硬编码和操作繁琐的问题。

zhangxia_的博客 2770

SpringBoot 中如何使用MyBatis对MySQL 数据增删改查

MyBatis 是一款优秀的持久层框架,它简化了 Java 应用程序对数据库的操作。MyBatis 提供了一种简单的方式来映射 Java 对象和数据库记录之间的关系,而无需完全依赖于 ORM(对象关系映射)工具的自动处理机制。想象一下,你有一个应用程序,需要频繁地从数据库中读取数据和保存数据。如果没有 MyBatis,你需要自己写很多复杂的代码来处理这些数据库操作,比如连接数据库、执行 SQL 语句、处理结果等等。MyBatis 就是来帮你简化这些工作的。定义与数据库表对应的实体类。

dggdg1249的博客 2453

智能体在车联网中的应用:一份详尽到每日的100天学习路线图

这100天的旅程,是一次对毅力、学习方法和工程实践能力的综合考验。它不仅关乎掌握一系列技术点,更关乎培养解决复杂系统性问题的思维模式——将宏观的交通需求分解为微观的智能体决策,再通过多智能体协同涌现出宏观的智能行为。当你完成这份大纲时,你将拥有的不仅是一个项目作品集,更是一套应对“智能体+车联网”乃至更广泛AI+垂直领域挑战的方法论。未来已来,期待你成为构建智能交通新生态的关键贡献者。

IT深耕十余载,大道之简 1335

Java 持久层框架-mybatis 轻松上手

对 Mybatis 的基本操作, 让你深刻体会 Mybatis 的基本执行流程, 轻松操作 mybatis. 适用于小白轻松上手

这个人很懒, 什么都没留下(这是我写的) 3378

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 908

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5922

一款优秀持久层框架Mybatis详解!

一款优秀的持久层框架 MyBatis框架详解!

SYJ的博客 1751

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2934

【java学习】MyBatis使用——Java 数据持久层框架

自定义的方式有两种,一种是实现TypeHandler这个接口,另一个就是继承BaseTypeHandler这个便捷的抽象类。举例:年龄的类型处理器。定义类型处理器;//指定与其关联的JDBC 类型列表。如果在jdbcType 属性中也同时指定,则注解上的配置将被忽略。//指定与其关联的 Java类型列表。如果在javaType 属性中也同时指定,则注解上的配置将被忽略。//设置参数,这里将Java的String类型转换为JDBC的Integer类型@Override。

午后阳光 3685

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 143

华为OD机试:查找接口成功率最优时间段 (C/C++/Py/Java/JS/GO)

华为OD机试双机位C卷 查找接口成功率最优时间段,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 4687

MyBatis持久层框架

MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。insert– 映射插入语句。update– 映射更新语句。delete– 映射删除语句。select– 映射查询语句。MyBatis 在查询和结果映射做了相当多的改进。一个简单查询的 select 元素是非常简单:</

2302_78998188的博客 1037

基于 Arduino 的鱼缸水质检测控制系统设计

本系统通过多传感器实时采集鱼缸水质参数(pH 值、温度、溶解氧、浊度),经 Arduino 主控芯片处理后,驱动执行模块自动调节水质,并通过显示模块实时展示数据。系统具备阈值报警、自动换水、温度调节、增氧等功能,适用于家庭或小型水族箱的水质智能管理。本设计提供了低成本、易扩展的鱼缸水质管理方案,适用于家庭水族箱或小型水产养殖场景,可根据实际需求调整传感器类型和控制逻辑。注:本设计如有疑问需要解惑可直接私信本人,看我个人简介。

weixin_42300449的博客 1087

【MyBatis】Java 数据持久层框架:认识 MyBatis

MyBatis 和 JPA 一样,也是一款优秀的持久层框架,它支持定制化 SQL、存储过程,以及高级映射。它可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通 Java 对象)映射成数据库中的记录。

Data · Model · Agent · Repeat 1682

微信小程序云开发 - 实现商家转账到零钱(微信企业付款到零钱) V3功能流程及完整实例代码,过微信云开发的云函数实现企业付款到零钱(提供详细示例源码纯云函数实现,证书、密钥、签名等各种常见问题解决方案

企业付款到零钱(微信小程序提现功能,提现到零钱)微信小程序-云函数实现微信企业付款到零钱功能,实现微信商户号中的企业付款到零钱的功能,微信小程序+云开发+商家转账至零钱+微信小程序用户提现,使用云开发环境的云函数实现微信小程序的支付功能,微信小程序实现微信企业付款到零钱功能的流程,V3 V2基于微信云开发的商家转账至零钱,小程序云函数企业付款到零钱功能实现,云开发实现微信商户支付企业付款到零钱功能,不用服务器纯云函数实现,详细示例代码demo教程,API证书错误,转账不到账怎么办,密钥生成有误,转账失败,有

🏆 前端领域优质创作者 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

优秀持久层框架——MyBatis!

优秀持久层框架——MyBatis!

mifffy_java的博客 898

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java持久层框架对比:Hibernate vs MyBatis vs Spring Data JPA

Hibernate是成熟的ORM(对象关系映射)框架,通过将Java对象映射到数据库表简化数据访问层开发。它提供完整的ORM解决方案,包括对象状态管理、延迟加载和缓存机制,提倡"对象优先"思想。开发者专注于领域模型设计,数据库操作由框架自动完成。Hibernate使用HQL(Hibernate查询语言)作为面向对象的查询语言,同时支持SQL和Criteria API。MyBatis是轻量级持久层框架,前身是iBatis。

程序媛学姐的博客 2403

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java开发中 Mybatis 持久层框架的介绍及简单应用示例

官方介绍:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 970

【MyBatis精讲】从入门到精通的详细指南:简化Java持久层操作的艺术

本文从MyBatis快速入门开始,逐步引导读者了解并掌握这一流行的持久层框架。不仅涵盖了基础的安装配置和增删改查操作,还深入探讨了映射文件的各个顶级元素及其属性信息。通过具体示例讲解了如何利用MyBatis简化SQL语句的编写,提高开发效率,同时也分享了一些在实际开发过程中可能遇到的常见问题及解决方案。无论是新手还是有经验的开发者,都能从中受益匪浅。

欢迎来到我的技术空间!我是一名经验丰富的Java开发工程师,热衷于分享我在软件开发领域的知识和心得。在这个博客里,您会发现一系列关于Java编程的文章,包括最佳实践、技术趋势、代码优化技巧以及一些有趣的项目案例。无论是初学者还是有经验的开发者,都能在这里找 1538

Java持久层框架之mybatis使用

一.什么是框架,框架从何而来,为什么使用框架? 框架(framework): 1.是一系列jar包,其本质是对JDK功能的拓展.(jar包,jar:class文件的压缩包) 2.框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题. 最佳实践(Best Practice):实际上是无数程序员经历过无数次尝试之后,总结出来的处理特定问题的特定方法. 如果把程序员的自由发挥看作是一...

weixin_41588751的博客 2652

【Java必学框架】一文搞懂Java持久层框架Mybatis,由浅入深

Mybatis是一个基于java的持久层框架,它主要用来解决原生JDBC代码冗余、重复,频繁申请释放连接资源等问题,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。并采用ORM思想,可以自动对Bean对象进行映射封装。此外,它还可以将Sql语句配置到xml文件中,实现持久操作与编码的松耦合。......

ven_ture的博客 3297

深入理解MyBatis:Java持久层框架的全面指南

MyBatis是一个优秀的ORM(对象关系映射)框架,它通过简单的XML或注解配置,将Java对象与数据库表进行映射,从而简化了数据库操作。无论是复杂的SQL查询,还是动态SQL生成,MyBatis都提供了强大的支持。本文将深入探讨MyBatis的核心概念、配置、映射、动态SQL、缓存以及高级特性,帮助你全面掌握MyBatis的使用方法。

代码不止,探索不息 909

三大框架 —— 持久层框架MyBatis

三大框架 —— 持久层框架MyBatis1. mybatis介绍2. 执行流程3. 使用步骤代码实现举例:商品分类CRUD操作4. 关联关系一对一分析(图)代码实现一对多分析代码实现 1. mybatis介绍 传统框架的缺点: 使用jdbc需要程序员创建连接,手写sql,处理结果集,使用了mybatis框架后,创建连接,结果集处理都由框架来完成。 mybatis它是轻量级持久层框架,由ibatis演化而来。它自动连接数据库,将数据库的结果集封装到对象中POJO。 2. 执行流程 Mybatis启

LIKE_0217的博客 9535

Mybatis——持久层框架

目录MyBatis01 简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis02 第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码2.4 注意点03 CRUD3.1 namespace3.2 select3.3 insert3.4 update3.5 delete3.6 分析错误3.7 万能的Map3.8 思考题3.9 注意点04 配置解析4.1 核心配置4.2 环境配置(environments)4.3 属性(properties)4.4

胖虎虎 2946
上一篇: 关于如何解决java线程安全问题?很重要? 快拿小本本记下来!
下一篇: 什么?学java这么久了,必须要掌握 java描述符问题?安排!
Danny_java
博客等级 码龄5年 9粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值