章总结:
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)删除