Mybatis实现增删改查(二)
2024-10-08 17:32:18
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. 目录结构及源码
源码下载:点此下载源码
最新文章
- RDIFramework.NET平台代码生成器V3.1版本全新发布-更新于2016-10-29(提供下载)
- (小常识)Dictionary的遍历
- Implement a TextView with an animation in its left side
- spring mvc 和 velocity整合
- [原创]html5_PC游戏_图片俄罗斯方块
- HTML5_拖放
- How to achieve dialog with lookup control
- 苹果iPhone不能判断红外发射管的好坏
- 【C++自我精讲】基础系列一 指针与引用
- php弱类型语言中的类型判断
- php操作memcache缓存基本方法
- Liveness 探测 - 每天5分钟玩转 Docker 容器技术(143)
- Ubuntu 14 安装WPS
- selenium-测试框架搭建(十三)
- Fiddler抓包【2】_捕获设置
- CentOS 6.8下网卡配置、桥接模式和NAT连接模式、VMware虚拟机克隆网卡配置
- BCP文件导入SQLServer数据库遇到的问题
- Linux的命名空间详解--Linux进程的管理与调度(二)【转】
- 《Linux内核设计与实现》读书笔记——第四章
- Spring及Spring Boot 国内快速开发框架
热门文章
- Python下opencv使用笔记(图像频域滤波与傅里叶变换)
- 站在巨人的肩膀上才能看得更加远[Amo]
- android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce
- 007、Java中定义int型变量
- 剑指offer自学系列(三)
- Redis 详解 (一) redis的简介和安装
- (HN)AHOI2018 转盘
- Flink 笔记(一)
- 最简单的前端获取后台的json值(后台怎么返回一个json对象到前台)
- Docker Java 例子