回顾一个点

之前不懂这句:

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. Spring扩展:替换IOC容器中的Bean组件 -- @Replace注解

    1.背景:     工作中是否有这样的场景?一个软件系统会同时有多个不同版本部署,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(比如登陆验证.用户信息查询等) ...

  2. WEB应用之httpd基础入门(二)

    前文我们聊了下httpd的一些基础设置,聊了下httpd的配置文件格式,长连接.mpm的配置以及访问控制基于文件路径和URL管控,回顾请参考https://www.cnblogs.com/qiuhom ...

  3. Java后台面试记录

    腾讯一面: 总结:考基础和代码(网址A是不是网址B的子域) + SQL(选出重复邮箱)(以下是没回答上来的) 逻辑回归公式(简历上写了协同过滤) 详见:https://blog.csdn.net/ma ...

  4. VUE npm run dev 启动时,报了一大堆错误 Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 7.x

    npm run dev 启动时,报了一大堆错误 Module build failed: Error: Missing binding E:\2017VocaSchool\vocationWeb\no ...

  5. MySQL 教程--检视阅读

    MySQL 教程--检视阅读 准备:Windows 上安装 MySQL 教程地址,PHP语言基础 教程地址2 教程地址3,有讲数据库的备份和恢复 教程地址4,w3c.china,php基础,扩展阅读 ...

  6. 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  7. jmeter参数化之函数助手(十五)

    jmeter-参数化: 参数化的作用:调用接口入参时.有时要求参数经常变化,如果每次去修改就会变得很繁琐,这时候就需要把经常变化的值改变为提前编辑好的文档或函数中,便于调用时使用不同的值. Jmete ...

  8. 好记性-烂笔头:controller-接收参数方式及注意事项

    长时间未使用的传参方式很容易遗忘 或 记忆混乱,虽然都很简单 但往往都是一些小细节打败了你. 小编决定要把他们记录下来. 1):@RequestBody 接收参数 及 注意事项 注意事项: @Requ ...

  9. 磅日波浪分析4H 20190927

    磅日的短线调整预计在132结束 目前已显现出ABC调整末端. 未来预计开启第五浪升势 破前期反弹高点.

  10. Linux环境下部署项目时的步骤和一些要注意的点

    SQL的导出和导入 sql的导出 首先选中要导出的数据库 然后点击左下角的administration选项,进入导出界面. 点击Data Export 然后勾选图中的几个选项即可导出一个sql,如果需 ...