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)项目 ...
随机推荐
- vue - 动态绑定 class
<template> <div class="todo-item" :class="{'is-complete':todo.completed}&q ...
- Java从.CSV文件中读取数据和写入
.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项. import java.io.BufferedReader; ...
- 图片上传--base64
<?php defined('BASEPATH') OR exit('No direct script access allowed'); include_once (APPPATH . &qu ...
- 004.Delphi插件之QPlugins,参数传递
界面如下 插件框架中大量使用了接口的东西,看的眼花缭乱,很多地方只做了申明,具体的实现是在另外的子类. DLL的代码如下 unit ParamTest; interface uses classes, ...
- Notepad2&Notepad++
写在前面 几个礼拜前电脑自带的记事本抽风,打开文本后台有进程但就是不显示界面,网上搜的教程无非是重装.杀毒.换包;这些操作要不就是太繁琐要不就是没效果,于是乎我物色了两款十分强大且轻量的开源记事本No ...
- mysql合并结果集
- POJ 2823 滑动窗口 单调队列模板
我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0 ...
- jmeter简单压测、下载文件
一.jmeter做简单压测(单机) 1.添加需要压测的HTTP请求 2.添加聚合报告 3.设置压测场景 4.查看聚合报告 二.多机同时进行压测 1.在需要连接的电脑上打开jmeter bin目录下的 ...
- Golang的类型转换实战案例
Golang的类型转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型概述 基础数据类型概述,博主推荐阅读: 布尔型: https://www.cnblogs. ...
- P1048 数字加密
P1048 数字加密 转跳点: