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)项目 ...
随机推荐
- day05-Python运维开发基础(双层循环、pass/break/continue、for循环)
# ### 双层循环练习 # 十行十列小星星 j = 0 while j<10: # 逻辑代码写在下面 # 打印一行十个小星星 i = 0 while i<10: print(" ...
- docker学习笔记-01:docker基本原理
一.docker原理 1.什么是docker:解决了运行环境和配置问题的容器,方便做持续集成并有助于整体发布的容器虚拟化技术. 2.虚拟机的缺点:(1)资源占用多:(2)冗余步骤多:(3)启动慢,分钟 ...
- Java笔记--多线程
1.线程的创建与运行(方式一): --1)创建一个Thread的子类: --2)重写Thread类的run()方法: --3)创建一个子类的对象: --4)调用线程的start()方法来启动线程,Ja ...
- H5端js实现图片放大查看-插件photoswipe的使用
这个是一个不知道什么鬼的东西,按照他需求改的,我也不知道对不对...看介绍说是h5把,我这个是用那个插件photoswipe的实现的 demo包地址: https://files-cdn.cnblog ...
- 吴裕雄--天生自然java开发常用类库学习笔记:Math与Random类
public class MathDemo01{ public static void main(String args[]){ // Math类中的方法都是静态方法,直接使用“类.方法名称()”的形 ...
- Codeforces Round #619 (Div. 2)
A. Three Strings 题意:给三个长度相同的非空字符串abc,依次将c中的每个字符和a或者b中对应位置的字符进行交换,交换必须进行,问能否使得ab相同. 思路:对于每一个位置,如果三个字符 ...
- 入门QT5 D1 Widget的移动
又重温了一遍C++之后来看QT教程了.QT之前也看过,不过都是很长时间之前了,一直也用到. 反过来再一学,这是和学新的是一样一样的. 首先创建新项目. 1.点击NEW PROJECT 2.Applit ...
- 侯捷C++学习(二)
#include <iostream>using namespace std;class complex{ public: complex (double r= 0, double i = ...
- 干货分享:Research Essay写作规范详解
同学们在刚到国外时觉得一切都很新鲜,感觉到处都在吸引着他们,但是大部分留学生在刚碰到Research Essay便是一头包.其实Research Essay也没有想象中的那么难,只是留学生们初次接触, ...
- Object.keys(),Object.values(),Object.entries()
(1)Object.keys() // 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名. eg:var obj = {a:1,b:'gy'} Ob ...