MyBatis3-实现单表数据的增删查改
继续前一篇文章http://www.cnblogs.com/EasonJim/p/7050710.html所示的例子,返回的是单个实体,而接下来将进行列表的返回等操作:
一、查询列表
查询出列表,也就是返回List, 在这个例子中也就是List<User>,这种方式返回数据,需要在User.xml里面配置返回的类型resultMap,注意不是resultType,而这个resultMap所对应的应该自己配置的,配置如下:
<!-- 为了返回List,类型而定义的resultMap -->
<resultMap type="User" id="resultListUser">
<id column="id" property="id" />
<result column="userName" property="userName" />
<result column="userAge" property="userAge" />
<result column="userAddress" property="userAddress" />
</resultMap>
查询列表的语句如下:
<!-- 返回List的select语句,注意 resultMap的值是指向前面定义好的 -->
<select id="selectUsers" parameterType="string" resultMap="resultListUser">
select * from user where userName like #{userName}
</select>
而这两个配置都是在mapper节点中的。
在IUserOperation接口中增加方法:
public List<User> selectUsers(String userName);
接下来是测试代码的获取列表,以下为核心代码:
List<User> users = userOperation.selectUsers("%");
for (User tempUser : users) {
System.out.println(tempUser.getUserAddress());
System.out.println(tempUser.getUserName());
}
二、增加数据
在IUserOperation接口中增加方法:
public void addUser(User user);
接口的方法还可以这样写,返回值代表影响的行数
public int addUser(User user);
在User.xml中配置增加的语句:
<!--执行增加操作的SQL语句。id和parameterType分别与IUserOperation接口中的addUser方法的名字和参数类型一致。以#{userName}的形式引用User参数的userName属性,MyBatis将使用反射读取User参数 的此属性。#{userName}中userName大小写敏感。引用其他的userAge等属性与此一致。useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入到User的id属性 -->
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})
</insert>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
System.out.println("Add:");
User addUser=new User();
addUser.setUserAddress("guangdong,guangzhou");
addUser.setUserName("eason");
addUser.setUserAge("80");
userOperation.addUser(addUser);
session.commit();//必须提交事务,否则不会写入到数据库。
if (addUser.getId()>0) {
System.out.println("增加数据成功,新增的id为:"+addUser.getId());
}
三、更新数据
在IUserOperation接口中增加方法:
public int updateUser(User user);
在User.xml中配置更新语句:
<update id="updateUser" parameterType="User">
update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
</update>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
User updateUser = userOperation.selectUserByID(1);
updateUser.setUserAddress("beijin,beijin");
int updateRetCount = userOperation.updateUser(updateUser);
session.commit();//必须提交事务,否则不会写入到数据库。
四、删除数据
在IUserOperation接口中增加方法:
public int deleteUser(int id);
在User.xml中配置删除语句:
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
int deleteRetCount = userOperation.deleteUser(6);
session.commit();//必须提交事务,否则不会写入到数据库。
测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test3
参考:
http://www.yihaomen.com/article/java/305.htm
MyBatis3-实现单表数据的增删查改的更多相关文章
- Mysql 单表操作、增删查改(基础4)
新建一个表,往里面插入数据. #新建一个表 mysql> create table test( -> id int, -> name varchar(20) -> );Quer ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- SSH框架的多表查询和增删查改 (方法一)上
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==> http://www.cnblogs.com/zhu520/p/7772823.html 因为最近在做Android 练习的 ...
- SSH框架的多表查询和增删查改 (方法一)中
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html 这边文章是接的刚刚前一遍的基础上敲的 ...
- SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...
- mysql数据库,数据表,数据的增删查改语句
查询mysql支持的引擎 show engines; 查询mysql支持的字符集 show character set; 设置mysql默认存储引擎 set default_storage_engin ...
- mysql中数据表记录的增删查改(1)
数据记录的增删改查 insert into `数据表名称` (`字段名称`, ...) values ('1', ...); delete from `数据表名称` where 子句; update ...
- SQLServer数据操作(建库、建表以及数据的增删查改)
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, ...
- SQLServer数据操作(建库、建表以及数据的增删查改)[转]
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, filename ...
随机推荐
- linux学习之路5 系统常用命令
日期时间 查看设置当前时间 date +%Y--%m--%d 格式化显示时间 -s " "(切换到超级用户)修改时间 hwclock(clock)用以显示硬件时钟时间 命令 cal ...
- rman 问题
1. RMAN Repeatedly Fail To Backup Archivelogs with RMAN-20242 Cause: There is a mis-match between th ...
- myBatis逆向生成及使用
引入数据库驱动 <!-- mybatis逆向生成包 --><dependency> <groupId>org.mybatis.generator</group ...
- 安装linux mint 18.3 后要做的
使用u盘安装的linux mint 18.3,安装过程基本顺利 发现在安装过程中使用中文语言的话会使得下载附加软件的速度快很多 安装完成之后要做的事情有: 1.字体 默认的楷体字比较难看,在软件管理器 ...
- Redis作者:深度剖析Redis持久化
Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到, ...
- responsive-navigator
html 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- Oracl常用e函数整理
最近学Oracle数据库,常常遇到Oracle数据库函数问题,经过默默地琢磨处理,总结了一些Oracle数据库常用函数. ------------------------------------ -- ...
- 安卓app测试之Monkey测试
一.Monkey特点 1.运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行 2.需要知道packageName 3.目的:主要测试产品是否存在崩溃问题和ANR问题. 二.获取包名的两个方法 首先 ...
- Flask框架 之重定向、cookie和session
一.URL重定向(redirect) @app.route("/login") def login(): # 使用url_for函数通过视图函数的名字找到url路径 url = u ...
- CPU总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束.按照计算机所传输的信息种类,计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.数据地址和控制 ...