mapper.xml 映射文件实现简单的增删改查(CRUD)

本文详细介绍使用MyBatis框架实现数据库的增删改查(CRUD)操作,包括配置XML映射文件、编写Java测试类,以及如何利用SqlSessionFactory和SqlSession进行数据库交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇-简单示例
参考说明文档
下一篇-mapper动态代理(基于接口开发)实现CRUD

根据上一篇的示例,在其基础上进一步深化完善增删改查的功能。

personMapper.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">

<!-- 该配置文件的头信息可以查看mybatis的说明文档 -->
<!-- Person类和MySQL中的Person表的映射文件 -->
<!-- namespace相当于该mapper.xml映射文件的唯一标识 -->
<!-- namespace="mapper文件的全路径" -->
<!-- 通过 namespace.id 获取对应的SQL语句 -->

<mapper namespace="org.ltx.entity.personMapper">

	<!-- id的值就是给该select取得标识, parameterType:输入参数的类型 resultType的值是该SQL语句的返回结果集类型 -->
	<!-- 注意:此处写sql语句不需要打分号 -->
	<!-- #{id}就相当于一个占位符 -->
	
	<select id="queryPersonById" parameterType="int" resultType="org.ltx.entity.Person">
		select * from person where id = #{id}
	</select>

	<!-- mybatis约定:输入参数parameterType 和 输出参数 resultType 在形式上只能写一个,如果要传入|返回 多个值,则可以用数组|对象 -->
	<!-- 输入参数: 对于简单类型(8个基本类型+String),可以用任意占位符 #{*} 对于对象类型,则必须是对象的属性 #{属性名} -->
	<!-- 返回多个值,如果返回类型是一个对象,则无论返回一个值还是返回多个值,在resultType只需要写对象类型即可 -->
		
	<select id="queryAllPerson" resultType="org.ltx.entity.Person">
		select * from person
	</select>

	<insert id="addPerson" parameterType="org.ltx.entity.Person">
		insert into person(id,name,age)values(#{id},#{name},#{age})
	</insert>

	<update id="updatePerson" parameterType="org.ltx.entity.Person">
		update person set name=#{name},age=#{age} where id=#{id}
	</update>

	<delete id="deletePersonById" parameterType="int">
		delete from person where id = #{id}
	</delete>

</mapper>

测试类 test.jave

package org.ltx.entity;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class test {
	
	//更加学号查询对象
	static void queryPersonById(int id) throws IOException{
		//1.加载Mybatis配置文件
		String resource = "config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 2.创建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream, "development");

		// 3.获得session对象,相当于connection,从而操作数据库
		SqlSession session = sqlSessionFactory.openSession();

		// 4.查询一个对象
		String statement = "org.ltx.entity.personMapper." + "queryPersonById";
		Person person = session.selectOne(statement, id);
		System.out.println(person);
		
		//5.关闭session
		session.close();
		
	}
	
	//查询全部对象
	static void queryAllPerson() throws IOException{
		//1.加载Mybatis配置文件
		String resource = "config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 2.创建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream, "development");

		// 3.获得session对象,相当于connection,从而操作数据库
		SqlSession session = sqlSessionFactory.openSession();

		// 4.查询全部对象
		String statement = "org.ltx.entity.personMapper." + "queryAllPerson";
		List<Person> persons = session.selectList(statement);
		System.out.println(persons);
		
		//5.关闭session
		session.close();
	}

	//增加一个对象
	static void addPerson(Person person) throws IOException{
		//1.加载Mybatis配置文件
		String resource = "config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 2.创建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream, "development");

		// 3.获得session对象,相当于connection,从而操作数据库
		SqlSession session = sqlSessionFactory.openSession();

		// 4.增加一个对象
		String statement = "org.ltx.entity.personMapper." + "addPerson";
		session.insert(statement, person);
		
		//5.transactionManager类型为JDBC方式,需要手动进行事务提交,否则数据库不会更新
		session.commit();
		
		System.out.println("增加成功");
		
		//6.关闭session
		session.close();
	}
	
	//更新对象
	static void updatePerson(Person person) throws IOException{
		//1.加载Mybatis配置文件
		String resource = "config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 2.创建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream, "development");

		// 3.获得session对象,相当于connection,从而操作数据库
		SqlSession session = sqlSessionFactory.openSession();

		// 4.更新对象
		String statement = "org.ltx.entity.personMapper." + "updatePerson";
		session.update(statement, person);
		
		//5.transactionManager类型为JDBC方式,需要手动进行事务提交,否则数据库不会更新
		session.commit();
		
		System.out.println("更新成功");
		
		//6.关闭session
		session.close();
	}
	
	//删除对象
	static void deletePerson(int id) throws IOException{
		//1.加载Mybatis配置文件
		String resource = "config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 2.创建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream, "development");

		// 3.获得session对象,相当于connection,从而操作数据库
		SqlSession session = sqlSessionFactory.openSession();

		// 4.更新对象
		String statement = "org.ltx.entity.personMapper." + "deletePersonById";
		session.delete(statement, id);
		
		//5.transactionManager类型为JDBC方式,需要手动进行事务提交,否则数据库不会更新
		session.commit();
		
		System.out.println("删除成功");
		
		//6.关闭session
		session.close();
	}
	

	public static void main(String[] args) throws IOException {
		queryPersonById(1001);
		queryAllPerson();
		
		Person person = new Person(1003,"ww",21);
		addPerson(person);
		queryAllPerson();
		
		person  = new Person(1003,"wqq",23);
		updatePerson(person);
		queryAllPerson();
		
		deletePerson(1003);
		queryAllPerson();
		
		
		
	}
	
	
}

注意事项:

参见程序的注释。
事务处理的类型如果设置为JDBC,一定要手工进行提交,否则在程序上显示成功,但是数据库不会更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值