回顾一个点

之前不懂这句:

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

现在理解了一点点,相当于实现了userMapper的接口。因为所有的UserMapper.xml都要在Mybatis-config.xml中注册,继续看源码过程中看到其中有部分的参数包括了T.Class和sqlsession,而sqlsession是读取Mybatis-config.xml创建的。所以不是特别难理解是怎么实现这个接口了。

UserMapper.class是通过类名.Class实现反射

具体的内容等课继续看应该会有涉及到。

增删改查的接口和xml

  • 每个xml都需要绑定接口名称为id
  • 如果参数或结果类型不为int或者void什么的,需要填resultType和parameterType,类型需要写完整包名
  • sql语句中的参数写成#{id}
  • 增删改需要提交事务,sqlsession.commit();
    <!--对应接口:User getUserById(int id);-->
<select id="getUserById" resultType="com.ou.pojo.User">
SELECT * FROM mybatis.user WHERE id=#{id}
</select>
    <!--对应接口:int insertUser(User user);-->
<insert id="insertUser" parameterType="com.ou.pojo.User">
INSERT INTO mybatis.user (id, username, pwd) VALUE (#{id},#{username},#{pwd})
</insert>
    <!--对应接口:int updateUser(User user);-->
<update id="updateUser" parameterType="com.ou.pojo.User">
UPDATE mybatis.user SET username=#{username},pwd=#{pwd} WHERE id=#{id}
</update>

通过Map传参:

因为User这个pojo可能有100个字段,假如修改时只想修改10个,如果参数类型还是User,则参数还得new User(p1 p2.....)

    <!--对应接口:int updateUserByMap(Map<String,Object> map);-->
<update id="updateUserByMap" parameterType="Map">
UPDATE mybatis.user SET pwd=#{pwd} WHERE id=#{id}
</update>

参数类型为Map,sql语句和原来一样就行

    @Test
public void testUpdateByMap()
{
SqlSession sqlSession = MybatisUtilis.getsqlsession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map=new HashMap<String, Object>();
map.put("id",4);
map.put("pwd","4321");
mapper.updateUserByMap(map);
sqlSession.commit(); sqlSession.close();
}

使用时略有不同,new一个Map<String,Object>对象,然后再put key-value就行

Maybatis的一些总结(三:增删改查)的更多相关文章

  1. 三分钟小课堂-----------------docker(三)增删改查命令

    主要为docker容器的增删改查命令 1  创建容器: docker run   -it   --name 别名  image_name   /bin/bash --name 别名 -d 后台 -t ...

  2. HBase命令(三) -- 增删改查

    新增 //语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp> //新增或 ...

  3. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  4. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

    前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...

  5. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  6. GZFramwork数据库层《三》普通主从表增删改查

    运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...

  7. SQL Server学习之路(三):“增删改查”之“增”

    0.目录 1.前言 2.通过SSMS添加数据 3.通过SQL语句添加数据 3.1 添加单条数据 3.2 添加多条数据 4.通过其他表导入数据 4.1 通过数据库中的其他表导入数据 4.2 通过exce ...

  8. Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查

    前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...

  9. python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)

    python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...

随机推荐

  1. pytorch里一些函数的说明记录

    THLongStorage *THTensor_(newSizeOf)(THTensor *self); THLongStorage *THTensor_(newStrideOf)(THTensor ...

  2. SQL常见错误总结

    目录 语法错误 标点错漏 重命名 数据拼接 null值 逻辑顺序 函数错误 参数的数量 参数的格式 逻辑错误 数据重复 无效筛选 标签重叠 时间错位 SQL是数据分析中最高频的操作之一,本文梳理常见的 ...

  3. docker:一文学基础使用

    目录 docker介绍 安装与镜像源配置 CentOS7 安装 设置镜像源 补充: 简单使用例子 基础概念 四个概念 镜像概念补充: 容器概念补充: 常用命令: 查看docker信息 镜像操作 容器操 ...

  4. Unity 游戏框架:资源管理神器 ResKit

    此篇文章准备了将近两周的时间,写了改,改了删.之前有朋友反馈,上一个文章太冗长了,影响阅读体验,这一讲就走个精简路线.所以只要不是很重要的内容就都删减掉了. 文章分两个部分,第一部分是原理,第二部分是 ...

  5. Django模板层学习笔记

    一. 前言 Django模板层的知识包括标签.过滤器.自定义标签.自定义过滤器以及inclusion_tag,最重要的是模板的继承和导入. 首先模板层最重要的是模板语法,之前我们提过涉及到变量用模板语 ...

  6. 安装RationalRose的问题解决

    列出大问题:在这一步无法进行下一步,直接就只能退出. 翻译过来的意思是:IBM安装程序被完全下载之前就终止了,大概是这个意思. 然后我就直接进了IBM的官网看了一下产品支持,上面解释说是组件clear ...

  7. bzoj4693

    题意 bzoj 做法 结论1:对于\((X_1,X_2,...,X_k)\),其为红的充要条件为:令\(Y_i=X_i-1\),\(\prod\limits_{k=1}^K {\sum\limits_ ...

  8. Electron 踩坑记录- require is not defined

    从 github 上拉取 electron-sample-apps 后,运行 electron printing, 出现如下报错信息 解决方案 在 main.js 中增加 nodeIntegratio ...

  9. 使用wrd2vec构建推荐系统

    概览 完整的代码可以从这里下载: https://github.com/prateekjoshi565/recommendation_system/blob/master/recommender_2. ...

  10. CNN更新换代!性能提升算力减半,还即插即用

    传统的卷积运算,要成为过去时了. Facebook和新加坡国立大学联手提出了新一代替代品:OctConv(Octave Convolution),效果惊艳,用起来还非常方便. OctConv就如同卷积 ...