Mybatis学习第二天(增删改查)

章总结:

在这里插入图片描述

1.包含增删改查的IpadMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--不需要创建接口-->
<mapper namespace="ipad">
    <select id="selectAll" resultType="com.hh.domain.Ipad">
        select * from ipadlist1
    </select>

    <!--#{}代表sql语句中的?表示占位符-->
    <!--{}中的名字要和ipad的属性名完全一致-->
    <!--因为主键中的id设置为auto_increment,所以一下就不需要再写该属性了-->
    <insert id="saveIpad"  parameterType="com.hh.domain.Ipad">
        insert into ipadlist1(ipadName, ipadPrice, birthDate) values(#{ipadName}, #{ipadPrice}, #{birthDate})
    </insert>

    <!--因为输入的是Ipad,为了从Ipad中获取相关属性的值,比如getIpadPrice,所以{}中应该严格写相应的属性名-->
    <update id="updateIpad" parameterType="com.hh.domain.Ipad">
        update ipadlist1 set ipadName=#{ipadName}, ipadPrice=#{ipadPrice}, birthDate=#{birthDate} where id=#{id}
    </update>

    <!--因为输入的是Integer,所以{}里面的参数可以随意写名字,因为不需要获取相应的属性值-->
    <delete id="deleteIpad" parameterType="java.lang.Integer">
        delete from ipadlist1 where id=#{num}
    </delete>
</mapper>

2.运行的主程序文件 mybatisMapperTest

import com.hh.domain.Ipad;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class mybatisMapperTest {
    /**
     * junit中修饰的所有方法只能用public void修饰
     */
    private SqlSession sqlSession;
    private InputStream inputStream;

    @Before // 在执行测试对象之前执行
    public void creteSqlSession() {
        // 如果为空时,那么就应该赋值
        try {
            // 读取配置文件,生成自己输入流(这里要选择apache的mybatis.io
            inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            // 获取SqlSessionFactory工厂
            SqlSessionFactory factory = builder.build(inputStream);
            // 获取SqlSession
            sqlSession = factory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    // 测试不创建接口,直接查询需要执行的sql语句的statement的id
    @Test
    public void selectIpadsTest(){
        // 直接使用sqlSession的selectList的方法
        List<Ipad> ipads = sqlSession.selectList("ipad.selectAll");
        System.out.println("找到所有的ipad的信息:");
        for (Ipad ipad : ipads) {
            System.out.println(ipad);
        }
    }

    /*
        测试新插入一条Ipad记录
     */
    @Test
    public void saveIpadInfoTest() {
        Ipad ipad = new Ipad();
        // 主键是自增的,所以不需要设置
        ipad.setIpadName("ipad pro2020");
        ipad.setIpadPrice(5999);
        ipad.setBirthDate(new Date());

        sqlSession.insert("ipad.saveIpad", ipad);
        // 凡是会修改数据库的操作,都需要事务的支持,所以手动提交事务
        sqlSession.commit();
    }

    @Test
    public void updateIpadInfoTest(){
        Ipad ipad = new Ipad();
        ipad.setId(3);
        ipad.setIpadName("ipad 2019");
        ipad.setIpadPrice(1500);
        ipad.setBirthDate(new Date());

        sqlSession.update("ipad.updateIpad", ipad);
        sqlSession.commit();
    }

    @Test
    public void deleteIpadInfoTest(){
        Integer id = 3;
        sqlSession.delete("ipad.deleteIpad", id);
        sqlSession.commit();
    }
    
    @After
    public void close(){
        try {
            sqlSession.close(); // 因为里面用到了connection
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.结果图

(1)原本
-在这里插入图片描述
(2)插入
在这里插入图片描述
(3)修改
在这里插入图片描述
(4)删除
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值