Mybatis实现增删改查(二)
1. 准备
请先完成Mybatis基本配置(一)的基本内容
2. 查询多条商品信息
1)在com.mybatis.dao.PartDao中增加接口函数
public List<PartInfo> getAllPartInfo();
2)在com.mybatis.dao.mapper.PartMapper中增加其实现方法。尽管我需要返回的数据类型为List<PartInfo>,但是在Mapper文件中配置resultType属性的时候依然为com.mybatis.entity.PartInfo即可。mybatis会自动将所有的查询结果逐条创建实例并填充到list中去。
<!-- dao接口函数中的返回结果类型是List<PartInfo> -->
<!-- 但是在这里的resultType属性值依然是com.mybatis.entity.PartInfo -->
<!-- mybatis会自动将所有的查询结果填充到list中去 -->
<select id="getAllPartInfo" resultType="com.mybatis.entity.PartInfo">
SELECT * FROM tbInfoPart
</select>
3)测试下效果
public static List<PartInfo> selectAllPart(){
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.getAllPartInfo";
List<PartInfo> partInfos = session.selectList(statement);
session.close();
return partInfos;
}
public static void main(String[] args) {
List<PartInfo> partInfos = selectAllPart();
for (PartInfo partInfo : partInfos) {
System.out.println("ID:"+partInfo.getId()+" 商品:["+
partInfo.getPartCode()+"] "+
partInfo.getPartName()+" ,售价:"+
partInfo.getSalePrice()+"元/"+
partInfo.getUnit());
}
可看到打印结果为
ID: 商品:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
说明我们已经将所有的商品都查询出来了
3. 新增一条商品
1)在com.mybatis.dao.PartDao中增加接口函数
public void insertPartInfo(PartInfo partInfo);
2)在com.mybatis.dao.mapper.PartMapper中增加其实现方法。
<!-- #{} 大括号里面的参数名是和com.mybatis.entity.PartInfo中的属性名对应的 -->
<!-- mybatis会自动将其属性值按照数据类型填充到被预编译的SQL脚本中 -->
<insert id="insertPartInfo" parameterType="com.mybatis.entity.PartInfo">
INSERT INTO tbInfoPart (PartCode, PartName, Unit, SalePrice)
VALUES (#{partCode},#{partName},#{unit},#{salePrice})
</insert>
3)测试下效果,注意session.commit()不要遗漏,否则数据无法提交到数据库
public static void insertPart(PartInfo partInfo){
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.insertPartInfo";
session.insert(statement, partInfo);
session.commit();
session.close();
}
public static void main(String[] args) {
//先查询下数据库有哪些商品了
List<PartInfo> partInfos;
partInfos = selectAllPart();
for (PartInfo partInfo1 : partInfos) {
System.out.println("ID:"+partInfo1.getId()+" 商品:["+
partInfo1.getPartCode()+"] "+
partInfo1.getPartName()+" ,售价:"+
partInfo1.getSalePrice()+"元/"+
partInfo1.getUnit());
}
//添加商品
PartInfo partInfo = new PartInfo();
partInfo.setPartCode("001-0003");
partInfo.setPartName("康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视");
partInfo.setUnit("台");
partInfo.setSalePrice(1699.00f);
insertPart(partInfo);
System.out.println("新增商品完成!");
//再重新查询下数据库的商品看看我们新添加的商品是否成功保存到数据库
partInfos = selectAllPart();
for (PartInfo partInfo2 : partInfos) {
System.out.println("ID:"+partInfo2.getId()+" 商品:["+
partInfo2.getPartCode()+"] "+
partInfo2.getPartName()+" ,售价:"+
partInfo2.getSalePrice()+"元/"+
partInfo2.getUnit());
}
}
可看到打印结果为
ID: 商品:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
新增商品完成!
ID: 商品:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
ID: 商品:[-] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:.0元/台
说明我们新增的商品已经成功保存到数据库里面了
4.编辑商品信息
1)在com.mybatis.dao.PartDao中增加接口函数
public void updatePartInfo(PartInfo partInfo);
2)在com.mybatis.dao.mapper.PartMapper中增加其实现方法。
<!-- #{} 大括号里面的参数名是和com.mybatis.entity.PartInfo中的属性名对应的 -->
<!-- mybatis会自动将其属性值按照数据类型填充到被预编译的SQL脚本中 -->
<update id="updatePartInfo" parameterType="com.mybatis.entity.PartInfo">
UPDATE tbInfoPart SET
PartCode=#{partCode},
PartName=#{partName},
Unit=#{unit},
SalePrice=#{salePrice}
WHERE ID=#{id}
</update>
3)测试下效果,注意session.commit()不要遗漏,否则数据无法提交到数据库
public static void updatePart(PartInfo partInfo){
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.updatePartInfo";
session.update(statement, partInfo);
session.commit();
session.close();
}
public static void main(String[] args) {
PartInfo partInfo;
partInfo = selectPart(1);
System.out.println("原商品信息:["+partInfo.getPartCode()+"] "+
partInfo.getPartName()+" ,售价:"+
partInfo.getSalePrice()+"元/"+
partInfo.getUnit());
partInfo.setPartCode("001-0003");
partInfo.setPartName("康佳(KONKA) LED55U60 55英寸 优酷电视梦想版8核优酷视频海量应用");
partInfo.setUnit("台");
partInfo.setSalePrice(2999.00f);
updatePart(partInfo);
System.out.println("修改商品完成!");
partInfo = selectPart(1);
System.out.println("新商品信息:["+partInfo.getPartCode()+"] "+
partInfo.getPartName()+" ,售价:"+
partInfo.getSalePrice()+"元/"+
partInfo.getUnit());
}
可看到打印结果为
原商品信息:[-] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:.9元/台
修改商品完成!
新商品信息:[-] 康佳(KONKA) LED55U60 55英寸 优酷电视梦想版8核优酷视频海量应用 ,售价:.0元/台
说明我们编辑的商品已经成功保存到数据库里面了
5.删除商品信息
1)在com.mybatis.dao.PartDao中增加接口函数
public void deletePartInfo(int id);
2)在com.mybatis.dao.mapper.PartMapper中增加其实现方法。
<delete id="deletePartInfo" parameterType="int">
DELETE FROM tbInfoPart WHERE ID=#{id}
</delete>
3)测试下效果,注意session.commit()不要遗漏,否则数据无法提交到数据库
public static void deletePart(int id) {
InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
SqlSession session = sessionFactory.openSession();
String statement = "com.mybatis.dao.PartDao.deletePartInfo";
session.update(statement, id);
session.commit();
session.close();
}
public static void main(String[] args) {
// 先查询下数据库有哪些商品了
List<PartInfo> partInfos;
partInfos = selectAllPart();
for (PartInfo partInfo1 : partInfos) {
System.out.println("ID:" + partInfo1.getId() + " 商品:[" +
partInfo1.getPartCode() + "] " +
partInfo1.getPartName() + " ,售价:" +
partInfo1.getSalePrice() + "元/" +
partInfo1.getUnit());
}
// 删除商品
deletePart(1);
System.out.println("删除商品完成!");
// 再重新查询下数据库的商品看看我们删除的商品是否成功删除
partInfos = selectAllPart();
for (PartInfo partInfo1 : partInfos) {
System.out.println("ID:" + partInfo1.getId() + " 商品:[" +
partInfo1.getPartCode() + "] " +
partInfo1.getPartName() + " ,售价:" +
partInfo1.getSalePrice() + "元/" +
partInfo1.getUnit());
}
}
可看到打印结果为
ID: 商品:[-] 康佳(KONKA) LED55U60 55英寸 优酷电视梦想版8核优酷视频海量应用 ,售价:.0元/台
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
ID: 商品:[-] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:.0元/台
新增商品完成!
ID: 商品:[-] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:.0元/台
ID: 商品:[-] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:.0元/台
可以看到ID=1的商品已经被删除掉了
6. 目录结构及源码

源码下载:点此下载源码
Mybatis实现增删改查(二)的更多相关文章
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- Mybatis实例增删改查(二)
创建实体类: package com.test.mybatis.bean; public class Employee { private Integer id; private String las ...
- MyBatis批量增删改查操作
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...
- Spring Boot入门系列(六)如何整合Mybatis实现增删改查
前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...
- ssm 框架实现增删改查CRUD操作(Spring + SpringMVC + Mybatis 实现增删改查)
ssm 框架实现增删改查 SpringBoot 项目整合 一.项目准备 1.1 ssm 框架环境搭建 1.2 项目结构图如下 1.3 数据表结构图如下 1.4 运行结果 二.项目实现 1. Emplo ...
- MyBatis的增删改查。
数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连 ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。
1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...
- 上手spring boot项目(三)之spring boot整合mybatis进行增删改查
使用mybatis框架进行增删改查大致有两种基础方式,一种扩展方式.两种基础方式分别是使用xml映射文件和使用方法注解.扩展方式是使用mybatis-plus的方式,其用法类似于spring-data ...
- 从0开始完成SpringBoot+Mybatis实现增删改查
1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...
随机推荐
- bugku love
emmm....控制台运行一下 接着查一下是否有壳 显示是没有壳的,接着查看一下结构 也没有什么发现,上ida看一下吧,顺便说一句每个人的解题思路都不一样.面对一开始都不清楚的结构我会选择交叉引用这样 ...
- 015、MySQL取今天是第几季度,往后几个月是第几季度
#取今天是第几季度 SELECT QUARTER( curdate( ) ); #取往后几个月是第几季度 , INTERVAL MONTH ) ); , INTERVAL MONTH ) ); , I ...
- 006、MySQL取当前系统时间
#取当前时间文本格式 SELECT curdate( ) , now( ); 效果如下图: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:3824772 ...
- .net 4.0 : Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.****'
解决办法,添加 MicroSoft.CSharp 的引用.
- 《机学一》特征工程1 ——文本处理:sklearn抽取、jieba中文分词、TF和IDF抽取
零.机器学习整个实现过程: 一.机器学习数据组成 特征值: 目标值: 二.特征工程和文本特征提取 1.概要: 1.特征工程是什么 2.特征工程的意义:直接影响预测结果 3.scikit-learn库 ...
- Golang函数-不定参函数
Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- ffmpeg 多路实时问题之解决思路
记得前面有人提出多路视频不实时问题,这个首先需要从网络带宽上查看是否视频帧全实时的到达,还有一个问题就是,即使视频帧全部到达,看起CPU也是足够的,但是却表现为慢镜头这种样子,那么很可能是解码显示的 ...
- 略坑的C#自动回收机制
说起这个坑货,要说说折腾了好久的bug,项目对方需要在32位系统上使用,C#加载图像扔给C++处理再返回.所以想好了,C#这边加载图像开好内存扔给C++,各自开的内存各自释放. 所以,在32位系统上出 ...
- php.laravel.log
看代码,原厂代码写的比较清楚,版本(laravel5.7) 简单使用,方便调试,详细使用需要详细查看文档. 在config/app.php 添加 'log' => env('APP_LOG', ...
- Python 自动登录哔哩哔哩(2captcha打码平台)
前言 研究爬虫的各位小伙伴都知道,需要登录才能获取信息的网站,是比较难爬的,原因就是在于,现在各大网站为了反爬,都加入了图片验证码,滑动验证码之类的干扰 本篇就针对哔哩哔哩的滑动验证码进行讲解和破解 ...