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,对象关系映射),无法脱离数据库进行适 ...
随机推荐
- BZOJ1412[ZJOI2009]狼和羊的故事——最小割
题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...
- #189 stat(动态规划)
容易想到固定第一个排列为1~n,算出答案后乘上n!即可,但这样就离正解走远了. 考虑排列dp的一般套路,将数从大到小加入排列,这样每个位置第一次填数时(不管是第一个还是第二个排列)其贡献就确定了. 显 ...
- C - A Simple Problem with Integers POJ - 3468 线段树模版(区间查询区间修改)
参考qsc大佬的视频 太强惹 先膜一下 视频在b站 直接搜线段树即可 #include<cstdio> using namespace std; ; int n,a[maxn]; stru ...
- P1495 曹冲养猪
原题链接 https://www.luogu.org/problemnew/show/P1495 这个题明显的中国剩余定理(孙子定理),如果有不懂孙子定理的点这个链接https://baike.bai ...
- 洛谷P2045 K方格取数(算竞进阶习题)
费用流 又是一道网络流的模型,对于这种费用与经过次数有关的边,我们经常把边拆成多条,比如这个题,第一次费用是x,第二次是0,我们就可以先把点拆成入点和出点,入点和出点又连两条边,第一条容量为1,费用为 ...
- eclipse中git推送上传错误 没有足够的数据写入
Can't connect to any repository: https://github.com/jiashubing/test.git (https://github.com/jiashubi ...
- [POJ 1637] Sightseeing tour(网络流)
题意 (混合图的欧拉回路判定) 给你一个既存在有向边, 又存在无向边的图. 问是否存在欧拉回路. \(N ≤ 200, M ≤ 1000\) 题解 难点在于无向边. 考虑每个点的度数限制. 我们先对无 ...
- Codeforces Round #545 Div1 题解
Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...
- luogu1397 [NOI2013]矩阵游戏 (等比数列求和)
一个比较显然的等比数列求和,但有一点问题就是n和m巨大.. 考虑到他们是在幂次上出现,所以可以模上P-1(费马小定理) 但是a或c等于1的时候,不能用等比数列求和公式,这时候就要乘n和m,又要变成模P ...
- poj2431(优先队列+贪心)
题目链接:http://poj.org/problem?id=2431 题目大意:一辆卡车,初始时,距离终点L,油量为P,在起点到终点途中有n个加油站,每个加油站油量有限,而卡车的油箱容量无限,卡车在 ...