回顾一个点

之前不懂这句:

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. Dubbo之服务暴露

    前言 本文 Dubbo 使用版本2.7.5 Dubbo 通过使用dubbo:service配置或@service在解析完配置后进行服务暴露,供服务消费者消费. Dubbo 的服务暴露有两种: 远程暴露 ...

  2. 使用JDBC工具类模拟登陆验证-Java(新手)

    模拟登陆验证: package JdbcDome; import java.sql.Connection; import java.sql.PreparedStatement; import java ...

  3. Natas18 Writeup(Session登录,暴力破解)

    Natas18: 一个登录界面,查看源码,发现没有连接数据库,使用Session登录,且$maxid设定了不大的上限,选择采取爆破. 源码解析: <html> <head> & ...

  4. mysql & Tomcat使用问题记录

    mysql使用问题记录 1.mysql如何修改root密码 a.进入mysql安装目录b.登录 mysql -u root -pc.修改密码 mysql> SET PASSWORD FOR ro ...

  5. Building Applications with Force.com and VisualForce(Dev401)(十三):Implementing Business Processes:Automating Business Processes Part II

    ev401-014:Implementing Business Processes:Automating Business Processes Part II Module Agenda1.Multi ...

  6. JavaScript模块化-CommonJS、AMD、CMD、UMD、ES6

    前言:模块化开发需求 在JS早期,使用script标签引入JS,会造成以下问题: 加载的时候阻塞网页渲染,引入JS越多,阻塞时间越长. 容易污染全局变量. js文件存在依赖关系,加载必须有顺序.项目较 ...

  7. [React]Hook初探

    Hook是什么 Hook是React从16.8开始支持的特性,使用Hook可以在不使用class时使用state Hook支持在不需要修改组件状态的情况下复用逻辑状态,从而解决使用render pro ...

  8. iOS 缩小 ipa 大小

    一.爱奇艺 爱奇艺移动应用优化之路:如何让崩溃率小于千分之二 iOS8 对于 App 的 text 段有 60MB 的限制: 超过 200MB 的 App 需要连接 WIFI 下载(之前是 150MB ...

  9. CtenOS开放3306端口

    1.查看防火墙状态 2. 关闭防火墙firewall 3. 开启端口 4. 重启防火墙 5. 常用命令介绍 在 Centos 7 中防火墙由 firewalld 来管理,而不是 iptables. 1 ...

  10. [WPF]为什么使用SaveFileDialog创建文件需要删除权限?

    1. 问题 好像很少人会遇到这种需求.假设有一个文件夹,用户有几乎所有权限,但没有删除的权限,如下图所示: 这时候使用SaveFileDialog在这个文件夹里创建文件居然会报如下错误: 这哪里是网络 ...