mybatis入门--单表的增删改操作
单表的增加操作
前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作。首先是在user.xml文件中添加insert的方法。代码如下
<!-- 添加用户 -->
<insertid="insertUser"parameterType="cn.itcast.mybatis.po.User">
insert into user(username,birthday,sex,address)
<!--这里的#{}中的值,必须和user类中的属性名称一致,建议直接粘贴过来-->
values(#{username},#{birthday},#{sex},#{address})
</insert>
然后就是写个测试方法,代码如下:
// 添加用户信息
@Test
publicvoid testInsert() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加用户信息
User user = new User();
user.setUsername("张小明");
user.setAddress("河南郑州");
user.setSex("1"); sqlSession.insert("test.insertUser", user);
//提交事务,这里需要手动提交。
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
注意:这里需要强调的是,由于使用的是jdbc的默认事物,mybatis会自动开启事物,但是不知道什么时候提交,所以需要手动进行事物的提交。
有比较细心地同学可能注意到了,我们的insert语句中没有写id的值。这就要求我们的数据库是主键自增长的,但是依然有问题:我们添加进去的用户和我们的内存中的用户信息不一致——因为我们的内存中的user是没有主键的。怎么解决这个问题呢?我们需要在user.xml中尽心这些配置:
<insert id="insertUser" parameterType="cn.itcast.pojo.User">
<!--
select LAST_INSERT_ID() mybatis函数作用是查询最后增加的数据的主键id keyProperty:将这个数据库函数查询出的数据放到传入参数的User对象的id属性中保存
order: 当前mysql函数相对于insert语句的执行顺序, 在insert前执行是before, 在insert后执行是after
resultType: keyProperty中指定的返回的id属性的类型
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into user (username, birthday, sex, address) values(#{username}, #{birthday}, #{sex}, #{address})
</insert>
这里面的selectKey可以将数据库自动生成的主键进行返回,然后会将我们的主键自动赋值给我们的user对象,这样的话,数据库和系统内存中的数据就一致了。
有的同学可能说,如果我不使用主键自增长,我使用uuid怎么办?这里向大家介绍下mybatis如何通过uuid生成主键。其实十分的简单,就是将我们的
select LAST_INSERT_ID()
换成
select uuid()
然后将after修改为before就可以了。代码如下:
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
<selectKey resultType="java.lang.String" order="BEFORE"
keyProperty="id">
select uuid()
</selectKey>
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert> 注意:这里使用的order是“BEFORE”
单表的删除操作
删除用户比较简单,这里就直接把我的代码贴上了
1.user.xml文件
<!-- 删除用户 -->
<deleteid="deleteUserById"parameterType="int">
delete from user where id=#{id}
</delete>
2.测试代码
@Test
publicvoidtestDelete() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 删除用户
sqlSession.delete("test.deleteUserById",18);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
单表的修改操作
修改代码比较简单,直接粘贴源代码了:
1.user.xml文件
<updateid="updateUser"parameterType="cn.itcast.mybatis.po.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
</update>
2.测试程序
@Test
publicvoidtestUpdate() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加用户信息
User user = new User();
user.setId(16);
user.setUsername("张小明");
user.setAddress("河南郑州");
user.setSex("1");
user.setPrice(1999.9f);
sqlSession.update("test.updateUser", user);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
mybatis入门--单表的增删改操作的更多相关文章
- java实战应用:MyBatis实现单表的增删改
MyBatis 是支持普通 SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 消除了差点儿全部的JDBC代码和參数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于 ...
- 2.Mybatis入门程序(单表的增删改成)
这里讲的单表的增删改查,是由mapper代理的增删改查,先来看看步骤: 1.jar包的导入 2.配置全局的配置文件 3.建立接口 4.编写mapper.xml 5.测试 工程结构:这个你们自己可以调整 ...
- SpringBoot整合Mybatis对单表的增、删、改、查操作
一.目标 SpringBoot整合Mybatis对单表的增.删.改.查操作 二.开发工具及项目环境 IDE: IntelliJ IDEA 2019.3 SQL:Navicat for MySQL 三. ...
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- Mybatis(一)实现单表的增删改查
1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...
- MYSQL基础操作之单表的增删改查
一.添加数据. -- 1.创建表,并插入一定的数据. CREATE TABLE STUDENT( ID INT, USERNAME ), SERVLET INT, JSP INT, ADDRESS ) ...
随机推荐
- pl2303 驱动
https://blog.csdn.net/ouening/article/details/70947759
- SAP 000 客户端初始登录
Solution 在SAP系统DB中删除账号SAP*,SAP系统会自动创建SAP*这个账号,然后初始密码是“PASS”,这样就获得Client 000 SAP*账号. Step by Step 以Or ...
- the type java.io.ObjectInputStream cannot be resolved. It is indirectly......
问题的原因: 配置tomcat7.0的时候自己设置了jre的版本1.8,而没有用myeclipse10自带的jre1.6,导致了出现了差错! 两种解决的办法: 1.点击windows--->pr ...
- python教程_1
1.2 不同应用领域的主流操作系统 (1)桌面操作系统 (2)服务器操作系统 (3)嵌入式操作系统 (4)移动设备操作系统 1>.桌面操作系统: Windows系列(微软的.net开发) 用户群 ...
- spring boot 2 内嵌Tomcat Stopping service [Tomcat]
我在使用springboot时,当代码有问题时,发现控制台打印下面信息: Connected to the target VM, address: '127.0.0.1:42091', transpo ...
- Shiro在Spring session管理
会话管理 在shiro里面可以发现所有的用户的会话信息都会由Shiro来进行控制,那么也就是说只要是与用户有关的一切的处理信息操作都可以通过Shiro取得,实际上可以取得的信息可以有用户名.主机名称等 ...
- ReactCSSTransitionGroup
[ReactCSSTransitionGroup] ReactCSSTransitionGroup is a high-level API based on ReactTransitionGroup ...
- Linux 设置Redis开机启动
Debian 也就是Ubun16.04 亲测可用 http://www.tuicool.com/articles/UR73ieq Centos7.0 http://blog.csdn.net/alex ...
- Oracle怎么修改字段类型
转载:https://www.2cto.com/database/201710/689523.html 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管 ...
- CentOS 下搭建Tomcat
1.下载tomcat软件包 wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.ta ...