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:1 商品:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.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:1 商品:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
新增商品完成!
ID:1 商品:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
ID:3 商品:[001-0003] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:1699.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());
}

        可看到打印结果为

原商品信息:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
修改商品完成!
新商品信息:[001-0003] 康佳(KONKA) LED55U60 55英寸 优酷电视梦想版8核优酷视频海量应用 ,售价:2999.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:1 商品:[001-0003] 康佳(KONKA) LED55U60 55英寸 优酷电视梦想版8核优酷视频海量应用 ,售价:2999.0元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
ID:3 商品:[001-0003] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:1699.0元/台
新增商品完成!
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
ID:3 商品:[001-0003] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:1699.0元/台

可以看到ID=1的商品已经被删除掉了

6. 目录结构及源码

源码下载:点此下载源码

时间: 2024-08-28 04:59:34

Mybatis实现增删改查(二)的相关文章

mybatis之增删改查

一. 简介: Mybatis本是apache的一个开源项目ibatis, 2010年这个项目由apache software foundation迁移到了google code, 并且改名为Mybatis. Mybatis是一个基于Java的持久层框架. 二. 增删改查: 1. 代码结构图: 2. User实体类: /** * User实体类 */ public class User { private String id; private String uname; // 注意: 该字段名称与

idea使用mybatis写增删改查

idea应用mybatis写增删改查 entity层 private Integer id;private String userCode;private String userName;private String userPassword;private Integer gender;private Date birthday;private String phone;private String address;private Integer userRole;private Intege

MyBatis基本增删改查操作

本文内容主要介绍单条记录的增删改查操作,MyBatis提供了很多完成单条记录的增删改查操作的API.本例主要讲述<UserMapper> UserMapper org.apache.ibatis.session.SqlSession.getMapper(Class<UserMapper> clazz)的使用.使用此API,我们需要创建UserMapper操作接口,函数名和MyBatis的User.xml配置文件中的操作id名对应. [转载使用,请注明出处:http://blog.c

mybatis实现增删改查

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录.    MyBatis的前身是IBatis,也是一个使用很广的持久化框架.和hibernate对比,MyBatis更基础,要求使用者自己控制的东西更多

MyBatis批量增删改查操作

前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 批量增加操作步骤 1. 在接口UserMapper中添加批量增加方法. /** * 批量增加操作 * @param users */ public void batchInsertUsers(List<User> users); 2.在User.xml中添加批量增加操作的配置. <!-- 批量增

MyBatis的增删改查。

数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连接数据库的配置单独放在.properties 文件中,然后在XML文件中引用,示例如下: config.properties: driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:orcl username=pho

springboot整合mybatis, 增删改查

这篇文章是介绍 Spring Boot整合mybatis的,一个简单的增删改查. 建表DROP TABLE IF EXISTS tbl_user; CREATE TABLE tbl_user ( id int(11) NOT NULL AUTO_INCREMENT, user_name varchar(255) NOT NULL, password varchar(255) NOT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id)) ENGINE=

一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字段的删除过程中需不需要对数据进行备份 ''' 二.路由基础 ''' # url中含有四个参数 # url(regex, view, kwargs=None, name=None) # 正则路径 视图函数地址 默认关键字参数(了解) 路由别名 # r'index' 只要请求中含有index都可以匹配成

上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

1.引入依赖 <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency> <!-- Mybatis起步依赖 --> <dependency> <groupId>o