MyBatis-CURD
一、接口方法
/**
* 删除、修改、添加操作都可以返回三种类型
* Integer、Long、Boolean
*/
public interface MyUserMapper {
public MyUser selectMyUser(Integer id); public Integer updateMyUser(MyUser user); public Boolean addMyUser(MyUser user); public Long deleteMyUser(Integer id);
}
二、对应的 SQL 映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 对应接口文件的全路径 -->
<mapper namespace="com.dao.MyUserMapper">
<!--resultType 返回参数类型,可用别名-->
<select id="selectMyUser" resultType="myUser">
select * from myuser where id = #{id}
</select> <!--parameterType 输入参数类型,可用别名-->
<update id="updateMyUser" parameterType="myUser">
update myuser set name=#{name},age=#{age} where id=#{id}
</update> <!--useGeneratedKeys 返回插入主键 , keyProperty 把主键封装到 Bean 的那个字段-->
<insert id="addMyUser" parameterType="myUser" useGeneratedKeys="true" keyProperty="id">
insert into myuser(name,age) values (#{name},#{age})
</insert> <delete id="deleteMyUser" parameterType="integer">
delete from myuser where id=#{id}
</delete>
</mapper>
三、测试
单独使用 mybatis 框架进行增、删、改操作时,要显示的提交事务。session.commit(),不然会出现如下日志,且无法对数据库成功操作。
Rolling back JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@291ae]
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@291ae]

测试代码
public static void main(String[] args) {
SqlSession session = null;
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sqlSessionFactory.openSession();
MyUserMapper mapper = session.getMapper(MyUserMapper.class);
MyUser myUser = new MyUser(null,"zhangsan",21);
mapper.addMyUser(myUser);
session.commit();
System.out.println("主键:"+myUser.getId());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}

若为非自增主键(oracle)
<!-- 获取非自增主键的值:每次插入数据的主键是从另一张表中拿到的值 -->
<insert id="addUser" databaseId="oracle">
<!--
keyProperty 把查出主键封装到 Bean 的那个字段
order
BEFORE:先运行 selectKey 查询 id 的 SQL,查出 id 值封装给 javaBean 的 id 属性
AFTER:先运行插入的 SQL,再运行 selectKey 查询 id 的 SQL
resultType 查出的数据的返回值类型 -->
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
<!-- 查询主键的sql语句 -->
select EMPLOYEES_SEQ.nextval from dual
</selectKey>
insert into myuser(name,age) values (#{name},#{age})
</insert>
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete
MyBatis-CURD的更多相关文章
- Mybatis—curd
Mybatis简介: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- MyBatis初级实战之二:增删改查
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- MyBatis初级实战之三:springboot集成druid
OpenWrite版: 欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kuber ...
- MyBatis初级实战之四:druid多数据源
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- MyBatis初级实战之五:一对一关联查询
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 【mybatis】1、入门CURD基本操作(环境搭建)
#1.基本环境 环境 版本 jdk 1.7.0_10 ide eclipse-jee-luna-SR2-win32-x86_64 maven 3.3.3 mybatis 3.2.7 mysql 5.1 ...
- Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版
一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...
- MyBatis最原始的实现curd的操作
关于jdbc的缺点: 1.数据库链接创建释放频繁造成系统资源浪费从而影响系统性能.如果使用数据库连接池可以解决此问题. 2.sql语句在代码中硬编码,不利于维护,sql变动需要改变java代码 3.使 ...
- 使用tk.mybatis快速开发curd
使用mybatis已经是可以快速开发程序了,对于单表的curd似乎是一种可抽象的结果,下面介绍tk.mybatis的使用方式. maven引用 我使用的是这个版本,所以相关功能介绍也是这个版本. 使用 ...
- Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...
随机推荐
- java中值类型与引用类型的关系
值类型:就是java的基本类型.byte.short.int.long.float.char.double.boolean 引用类型:类(class).接口(Interface).数组(Array) ...
- vscode——配置git的path
设置 打开设置 搜索配置 复制Json文本 编辑配置 粘贴刚才复制的json文本,并将自己git的地址写好,保存即可 完整配置 { "workbench.colorTheme": ...
- 如何保证 spring-boot 和 spring-cloud版本一致
spring-boot 版本 和 spring-cloud版本是一一对应的,很多错误都是由于版本不一致导致的.很多百度的东西太老了, 版本一升级就会出错. spring的jar包依赖关系是最难的,但聪 ...
- HDOJ5551 Huatuo's Medicine
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5551 题目大意:... 题目思路:乱搞?模拟? #include <stdio.h> vo ...
- python3 函数function
def function(arg): pass 变量: 由字母.数字和下划线构成,不能以数字开头,不能任意特殊字符 变量定义规范,使用驼峰式或者下划线式格式 变量定义尽量简明,易懂,方便使用者应用 作 ...
- 【CF981F】Round Marriage(二分答案,二分图匹配,Hall定理)
[CF981F]Round Marriage(二分答案,二分图匹配,Hall定理) 题面 CF 洛谷 题解 很明显需要二分. 二分之后考虑如果判定是否存在完备匹配,考虑\(Hall\)定理. 那么如果 ...
- selenium 代理设置
设置Firefox代理: from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, Proxy ...
- docker命令篇
基础命令: 镜像: 获取镜像 $ docker pull centos:7 下拉自己仓库镜像,在后面仓库部分会讲到. 列出镜像: $ docker image ls 删除镜像: $ docker im ...
- [bzoj1692][队列变换]
题目链接 思路 首先肯定想到贪心,从队尾和队首取更小的那个. 但是如果遇到队尾和队首一样大的情况呢,总不能再挨个往前比较.所以就把整个字符串倒过来再挂到现在字符串的后面,也就是把当前字符串对称过去.然 ...
- Web Deploy 服务器安装设置与使用
一.服务器的安装设置 1.在windows server上确保IIS安装了[管理服务]这个功能.方法是在[服务器管理器]=>[管理]=>[添加角色和功能]=>[下一步]=>[基 ...