Mybatis 升级版的helloworld,数据库的增删改查

创建一个java project。
导入包:
在这里插入图片描述
创建Javabean,创建Javabean的实现接口,在接口里定义增删改查函数
在这里插入图片描述

写两个配置:
在这里插入图片描述

第一个是mybatis全局配置:
直接CV大法,配置的是数据源,以及注册接口配置xml
在这里插入图片描述

第二个是实现接口的方法。根据就是dao里的接口定义函数

		public Employee getEmpById(Integer id);
		public int updateEmployee(Employee employee);
		public int deleteEmployee(Integer id);
		public int insertEmployee(Employee employee);

一、实现第一个函数public Employee getEmpById(Integer id);
分析:这是一个查询操作,使用的是select标签,id就是函数名,查询的结果就是employee对象,但是这需要写全类名,使用#{}获取id的值

<select id="getEmpById" resultType="com.atshiyou.bean.Employee">
 <!-- sql语句不让写分号 -->
 	select * from t_employee where id = #{id}
 </select>

二、实现第二个函数public int updateEmployee(Employee employee);
分析:这是是一个更新数据库的函数,返回的结果是 影响了多少行,所以使用的是int接收返回值,但!!增删改都不需要写返回值类型!!

<update id="updateEmployee" >
 	update t_employee 
	set empname=#{empName}, gender=#{gender}, email=#{email}
	where id =#{id}
 </update>

三、四:删除表里的某个数据:delete from t_employee where id=#{id}
插入表中数据:

insert into t_employee(empname,gender,email) values (#{empName},#{gender},#{email})
<!--  public boolean deleteEmployee(Integer id); -->
<delete id="deleteEmployee">
	delete from t_employee  where id=#{id}
</delete>

<!-- public int insertEmployee(Employee employee); -->
<insert id="insertEmployee">
	insert into t_employee(empname,gender,email) values (#{empName},#{gender},#{email})
</insert>

测试代码

一共有三步:
1、根据全局配置文件创建出一个SqlSessionFactory

		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

cv这些代码之后,需要使用 CTRL+SHIRT+O快捷键导入包

2、得到SQLsession对象,获取连接

SqlSession openSession = sqlSessionFactory.openSession();

3、获取到dao接口的实现(映射器)
为了符合生产实际,采用了关闭连接,节约资源

EmployeeDao dao = openSession.getMapper(EmployeeDao.class);

		try {
			Employee employee = dao.getEmpById(1);
			System.out.println(employee);
		} finally {
			openSession.close();

		}

然后因为不只一个测试,一共有四个测试,所以提取出公共的部分出来,作为一个函数。在测试的时候调用这个函数。但是Junit测试为我们提供了一个注解@Before,就是在标注了@test的函数,测试之前就要执行,。最终代码简化成:

public class mybatistest {
	
	//工厂一个
	SqlSessionFactory sqlSessionFactory;
	
	@Before
	public void initsqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		new SqlSessionFactoryBuilder().build(inputStream);
	}
	
	/**
	 * 測試查詢
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException {
		
		// 2、得到SQLsession对象,获取连接
		SqlSession openSession = sqlSessionFactory.openSession();
		// 3、获取到dao接口的实现(映射器)
		EmployeeDao dao = openSession.getMapper(EmployeeDao.class);

		try {
			Employee employee = dao.getEmpById(1);
			System.out.println(employee);
		} finally {
			openSession.close();

		}

	}
}

上面是测试的查询功能,没问题,接下来查询插入数据功能
需要在Employee文件中,写一个有参构造器和无参构造器,无参构造器在有参的基础上
在这里插入图片描述
由于个人技术太low,使用before注解不太熟练,所以,还是老老实实的写代码吧
在这里插入图片描述

	@Test
	public void testInsert() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			EmployeeDao dao = openSession.getMapper(EmployeeDao.class);
			
			int i = dao.insertEmployee(new Employee(null, "tomcat", "10953@qq.com", 1));
			System.out.println(i);
		} finally {
			
			openSession.close();
		}
		
	}

在这里插入图片描述
所以还要在连接关闭之前,手动提交
在这里插入图片描述

查询数据库

在这里插入图片描述

还有另外一种方法:在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值