​1、CRUD

1.1namespace

namespace中的包名必须和Dao/mapper接口包名一致

1.2select

选择,查询语句

id:就是对应的namespace中的方法名
resultType:Sql语句执行的返回值类型
parameterType:参数类型

编写接口

User getUserById(int id);

编写接口对应的Mapper中语句

<select id="getUserById" parameterType="int"
resultType="com.aostarit.entity.User">
select * from mybatis.user where id = #{id}
</select>

测试:

@Test
public void getUserById() {
//获得sqlSession对象
SqlSession sqlsession = MybatisUtil.getSqlsession();
//执行SQL
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
//关闭sqlSession
sqlsession.close();
}

1.3Insert

<!--对象中的属性可以直接取出来 -->
<insert id="addUser" parameterType="com.aostarit.entity.User">
insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd})
</insert>

1.4update

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

1.5delete

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

注意点:增删改查需要提交事务

分许错误:

标签不要匹配错误:例如:select标签中必须写select语句
resources绑定mapper,需要使用路径
程序配置文件必须符合规范!
NullPointException,没有注册到资源!
输出的xml文件中存在中文乱码问题
maven资源没有导出问题!
mybatis核心配置文件中mapper映射器路径不能带.,需要用/代替
<!--映射器-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>

2、Map和模糊查询拓展

2.1假设我们的实体类、或者数据库中的表、字段或者参数过多,我们应该考虑使用Map!

<insert id="addUserMap" parameterType="map">
insert into mybatis.user (id, name, pwd) values (#{userId},#{userName},#{userPwd})
</insert>
public void addUser2() {
//获得sqlSession对象
SqlSession sqlsession = MybatisUtil.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
HashMap<String, Object> userMap = new HashMap<String, Object>();
userMap.put("userId",10);
userMap.put("userName","11234");
userMap.put("userPwd","1234343");
int result = mapper.addUserMap(userMap);
if(result>0){
System.out.println("插入成功");
}
//提交事务
sqlsession.commit();
//关闭sqlSession
sqlsession.close();
}

Map传递参数,直接在sql中取出对象即可

对象传递参数,直接在sql中取对象的属性即可

只有一个基本类型参数的情况下,可以直接在sql取到!

多个参数用Map,或者注解!

2.2模糊查询

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

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

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

 <select id="getUserLike" resultType="com.aostarit.entity.User">
select * from mybatis.user where name like "%"#{value}"%"
</select>

Mybatis实现增删改查的更多相关文章

  1. 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作

    一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...

  2. MyBatis的增删改查。

    数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连 ...

  3. MyBatis批量增删改查操作

      前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...

  4. 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

    1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...

  5. 上手spring boot项目(三)之spring boot整合mybatis进行增删改查

    使用mybatis框架进行增删改查大致有两种基础方式,一种扩展方式.两种基础方式分别是使用xml映射文件和使用方法注解.扩展方式是使用mybatis-plus的方式,其用法类似于spring-data ...

  6. 从0开始完成SpringBoot+Mybatis实现增删改查

    1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...

  7. Spring Boot入门系列(六)如何整合Mybatis实现增删改查

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  8. Mybatis实例增删改查(二)

    创建实体类: package com.test.mybatis.bean; public class Employee { private Integer id; private String las ...

  9. mybatis的增删改查返回值小析(六)

    本文验证了通过mybatis访问数据库时的,增删改查的返回值情况. 直接看代码. 1.service层 /** *@Author: Administrator on 2020/3/12 15:15 * ...

  10. ssm 框架实现增删改查CRUD操作(Spring + SpringMVC + Mybatis 实现增删改查)

    ssm 框架实现增删改查 SpringBoot 项目整合 一.项目准备 1.1 ssm 框架环境搭建 1.2 项目结构图如下 1.3 数据表结构图如下 1.4 运行结果 二.项目实现 1. Emplo ...

随机推荐

  1. 360 数科实践:JanusGraph 到 NebulaGraph 迁移

    摘要:在本文中 360 数科的周鹏详细讲解了业务从 JanusGraph 迁移到 Nebula Graph 带来的性能提升,在机器资源不到之前 JanusGraph 配置三分之一的情况下,业务性能提升 ...

  2. ChCore—实验 3:进程与线程、异常处理 部分记录

    思考题 1: 内核从完成必要的初始化到用户态程序的过程是怎么样的?尝试描述一下调用关系. 内核启动到用户程序启动的流程: main ├── uart_init ├── mm_init ├── arch ...

  3. 虚拟机 centos web nodejs服务 外网映射

    虚拟机 centos web nodejs服务 外网映射 起因 为了不买云服务器也是拼了 1. 安装虚拟机 VMware-Workstation-Lite-15.5.1-15018445精简官方中文安 ...

  4. 常见字符的ASCII码值

    ASCII值就是字符对应的十进制数值,字符就是可以表示的字符.

  5. 基于六轴传感器MPU6050的加速度和角度值读取

    一 系统简介 1.简介 MPU-60x0 是全球首例 9 轴运动处理传感器.它集成了 3 轴MEMS陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion ...

  6. 新服务器搭建docker跑mysql+java项目

    参考:https://js.work/posts/1362ba443b35d(yum安装java17) 踩了两个坑,一个前面的conf文件里监听80的配置没有删除掉,一个项目配置里面的路径还在用服务器 ...

  7. 关于easyExcel导出文字合并居中和服务器导出失败踩了一天的坑

    参考:https://blog.csdn.net/hanyi_/article/details/118117484,https://blog.csdn.net/sunyuhua_keyboard/ar ...

  8. c语言之遗漏---标准C的标记化结构初始化语法

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2015-12-29 19:22:14 ...

  9. Flutter如何状态管理

    目录介绍 01.什么是状态管理 02.状态管理方案分类 03.状态管理使用场景 04.Widget管理自己的状态 05.Widget管理子Widget状态 06.简单混合管理状态 07.全局状态如何管 ...

  10. js原型详解

    js中的原型毫无疑问一个难点,学习如果不深入很容易就晕了! 任何一个js知识点,比如事件流,闭包,继承等,都有许许多多的说法,对于这些知识点我们都应该先熟练的使用,然后自己整理一套属于自己的理解说辞, ...