Mybatis的单表无参与有参的CRUD

本文详细介绍了基于SqlSession的MyBatis单表无参及带参CRUD操作,包括查询、增加、修改和删除的基本用法,展示了如何使用XML映射文件定义SQL语句,并通过Java代码调用SqlSession完成数据库操作。

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

基于SqlSession的单表无参CRUD

<?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属性,作用:唯一的   表示一个 Mapper配置文件,保护文件中的标签ID不被污染。    注意:值不能重复        污染:值重复-->
	<mapper namespace="com.sxt.pojo.User">
	<!-- 配置SQL资源
		查询:select标签	属性:	id:唯一标识一个SQL语句参数		
							resultType:结果类型;声明使用哪个实体类存储查询的结果。一条结果一个实体类对象存储
							parameterType:声明实参类型					
		增加:insert标签
		修改:update标签
		删除:delete标签
		注意:同一文件内的标签ID不能重复
	 -->
	 <!-- 结果多条 -->
	 <select id="users" resultType="com.sxt.pojo.User">
	 	SELECT * FROM mybatis 
	 </select> 
	 
	 <!-- 结果1条 -->
	 <select id="user" resultType="com.sxt.pojo.User">
	 	SELECT * FROM mybatis WHERE userid=1
	 </select>
	 
	 <insert id="insu">
	 	INSERT INTO mybatis VALUE(default,"李四",14)
	 </insert>
	 
	  <update id="upu">
	 	UPDATE mybatis SET username="王五" WHERE userid=11
	 </update>
	 
	 <delete id="dele">
	 	DELETE FROM mybatis WHERE userid="4"
	 </delete>
	 
	</mapper>
	@Test
	public void test() throws IOException {
		//1.读取配置文件
		InputStream in = Resources.getResourceAsStream("mybatis.xml");
		//2.获取SqlSessionFactory工厂(底层完成了配置文件的解析)
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		//3.获取SqlSession对象
		SqlSession session = factory.openSession();
		//4.使用SqlSession对象完成对数据库的操作
			//查询一条
				User one = session.selectOne("com.sxt.pojo.User.user");
				System.out.println("查询结果为一条"+one);
			//查询多条
				List<User> list = session.selectList("com.sxt.pojo.User.users");
				for(User u:list){
					System.out.println("查询结果为多条"+u);
				}
			//增加
				int i = session.insert("com.sxt.pojo.User.insu");
				System.out.println("增加了"+i+"条数据");
			//修改
				int up = session.update("com.sxt.pojo.User.upu");
				System.out.println("修改了"+up+"条数据");
			//删除
				int dele = session.delete("com.sxt.pojo.User.dele");
				System.out.println("删除了"+dele+"条数据");
		//5.关闭资源    DML操作没有自动提交	需要自个儿手动提交
		session.commit();
		session.close();
	}

基于SqlSession的单表带参CRUD

单参数(查询)

  1. 在查询标签上使用parameterType属性 声明参数类型
        作用:因为SqlSession提供的数据库操作方法声明的实参类型为Object,要通过该属性将数据强转为对应的类型
  2. 在SQL语句中使用#{0}进行占位
  3. 使用SqlSession的方法完成查询
       selectListString str,Object arg1);
       selectOne(String str,Object arg1);
             String str:接收要执行的SQL语句的全限定路径
             Object arg0:接收实参

多参数(CRUD)

  1. 在查询标签上使用paramterType属性声明参数类型
  2. 在SQL语句中使用#{属性名|键名}进行参数占位
        注意:因为SqlSession对象提供的数据库操作方法只接收一个实参,所以,如果SQL语句中需要多个参数,必须将参数封装成一个对象,将该对象传递给方法完成数据库操作
  3. 使用SqlSession的方法完成操作
        注意:
            SqlSession对象提供的数据库操作方法直接受实参
	<!-- 一个数据 -->
	 <select id="userss" resultType="User" parameterType="int">
	 	SELECT * FROM mybatis WHERE userid=#{param1}
	 </select>
	 
	 <!-- 多个数据 -->
	  <select id="usersss" resultType="User" parameterType="List">
	 	SELECT * FROM mybatis WHERE username=#{username} AND userid=#{userid}
	 </select>
	 
	 <!-- 删除 -->
	 <delete id="delete" parameterType="int">
	 	DELETE FROM mybatis WHERE userid=#{0}
	 </delete>
	 
	 <!-- 增加 -->
	 <insert id="add" parameterType="com.sxt.pojo.User">
	 	INSERT INTO mybatis(username,userage) VALUE(#{username},#{userage})
	 </insert>
	 
	 <!-- 修改 -->
	 <update id="upda" parameterType="User">
	 	UPDATE mybatis SET username=#{username},userage=#{userage} WHERE userid=#{userid}
	 </update>
public class UserTest {

	private SqlSession session;
	
	@Before			//在所有使用@Test注解的方法执行前  执行
	public void before() throws IOException{
		//1.读取文件
		InputStream in = Resources.getResourceAsStream("mybatis.xml");
		//2.获取SqlSessionFactory工厂对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		//3.获取Session对象
		session = factory.openSession();
	}
	
	@After			//在所有使用@Test注解的方法执行后  执行
	public void After(){
		//关闭资源    	手动提交
		session.commit();
		session.close();
	}
	
	//带参的CRUD
	
		@Test
		public void test1() throws IOException{
			//使用Session对象完成对数据库的操作	
			//一个参数
			User selectOne = session.selectOne("com.sxt.pojo.User.userss",1);
			System.out.println("单个"+selectOne);
			
			//多参数
			User u = new User();
			u.setUsername("张三");
			u.setUserage(13);
			List<User> users = session.selectList("com.sxt.pojo.User.usersss",u);
			for(User us:users){
				System.out.println("多个"+us);
			}
		}
		//带参的增加
		//DML操作没有自动提交
		@Test
		public void test2() throws IOException{
			//使用SqlSession对象完成对数据库的操作
			User user = new User();
			user.setUsername("张三");
			user.setUserage(13);
			
			int count = session.insert("com.sxt.pojo.User.add", user);
			System.out.println("增加的行数"+count);
		}

		//带参的删除
		@Test
		public void test3() throws IOException{
			//使用SqlSession对象完成CRUD
			int count = session.delete("com.sxt.pojo.User.delete", 13);
			System.out.println("删除行数"+count);
		}
		
		//带参的修改
		@Test
		public void test4() throws IOException{
			//使用SqlSession对象完成CRUD操作
			User u = new User();
			u.setUserid(15);
			u.setUsername("李四");
			u.setUserage(88);
			int count = session.update("com.sxt.pojo.User.upda",u);
			System.out.println("修改的行数"+count);
		}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值