使用MyBatis框架实现的简单增删改查

提示:先看最后总结的程序总体布局


前言

该使用Mybatis框架实现数据库的增删改查,数据库设计等先看连接文章:
https://blog.csdn.net/m0_49173531/article/details/115376709


提示:以下是本篇文章正文内容,下面案例可供参考

一 、查

1.添加映射

查询分为两种,一是单数据精确查询,二是多数据模糊查询,下面演示两种不同根据姓名的查询方法
PS:SQL语句中的"${}"用来表示拼接SQL的字符串,即不加解释的原样输出,但是在使用时无法防止SQL注入问题,需要用concat()进行字符拼接
在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码

<!-- 通过姓名  精确  查询用户信息 -->
  <select id="findUserByName" resultType="com.ccit.entity.User">
    select * from t_user where username = #{username}
  </select>
  
  <!-- 通过姓名  模糊   查询用户信息 -->
  <select id="findUserByName2" resultType="com.ccit.entity.User" parameterType="String">
  select * from t_user where username like concat('%',#{value},'%');
  </select>

2.创建[查找操作]测试类

在com.ccit.test包下创建MyBatisSelectTest测试类

package com.ccit.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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;
import org.junit.Test;

import com.ccit.entity.User;

public class MyBatisSelectTest {
	/*
	 * 1.根据客户姓名 精确 查询用户信息 2.根据客户姓名 模糊 查询用户信息
	 */

	@Test
	public void findUserByNameTest() throws Exception {

		// 1.读取配置文件

		String resource = "MyBatis.config.xml";

		InputStream inputstream = Resources.getResourceAsStream(resource);

		// 2.根据配置文件构建SqlSessionFactory

		SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);

		// 3.通过SqlSessionFactory创建SqlSession
		SqlSession sqlsession = salsessionfactory.openSession();

		// 4.SqlSession执行映射文件中定义的SQL,并返回映射结果

		/*
		 * 根据用户姓命精确查询客户信息 User
		 * user=sqlsession.selectOne("com.ccit.Mapper"+".UserMapper.findUserByName","小吴"); 
		 * System.out.println(user.toString());
		 */
		List<User> users = sqlsession.selectList("com.ccit.Mapper" + ".UserMapper.findUserByName2", "龙");

		// 5.打印输出结果
		for(User user:users) {
			System.out.println(user.toString());
		}

		// 6.关闭SqlSession
		sqlsession.close();
	}
	
	
	
	
}

3.执行结果

执行MyBatisSelectTest.java的结果
在这里插入图片描述

二、增

1、添加映射

在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码

<!-- 添加用户信息 -->
  <insert id="addUser" parameterType="com.ccit.entity.User">
  insert into t_user(username,passward,gender,registTime)
  values(#{username},#{passward},#{gender},#{registTime})
  </insert>

2.创建[添加操作]测试类

在com.ccit.test包下创建MyBatisInsertTest测试类

package com.ccit.test;

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

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.Test;

import com.ccit.entity.User;

public class MyBatisInsertTest {
	/*
	 * 添加用户信息
	 * 
	 * */
	
	@Test
	public void addUserTest() throws IOException {
		
		String resource = "MyBatis.config.xml";
		InputStream inputstream = Resources.getResourceAsStream(resource);
		SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
		SqlSession sqlsession = salsessionfactory.openSession();
		
		//4.SqlSession对象执行添加操作
		//4.1创建User对象
		User user=new User();
		user.setUsername("陈晓晓");
		user.setPassward("345");
		user.setGender(1);
		user.setRegistTime(new Date());
		//4.2执行SqlSession对象的插入方法,返回的是受影响行数
		int rows=sqlsession.insert("com.ccit.Mapper"+".UserMapper.addUser", user);
		
		//4.3通过返回的结果判断插入操作是否执行成功
		if(rows>0) {
			System.out.println("成功插入"+rows+"条数据");
		}else {
			System.out.println("插入数据失败!!!");
		}
		
		//4.4提交事务
		sqlsession.commit();
		
		//5.关闭SqlSession
		sqlsession.close();
	}
}

3.执行结果

运行MyBatisInsertTest.java产生的结果

在这里插入图片描述

三、 删

1.添加映射

在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码

<!-- 删除用户信息 根据id删除用户-->
  <delete id="deleteUser" parameterType="Integer">
  delete from t_user where id=#{id}
  </delete>

2.创建[删除操作]测试类

在com.ccit.test包下创建MyBatisDeleteTest测试类

package com.ccit.test;

import java.io.IOException;
import java.io.InputStream;

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.Test;

public class MyBatisDeleteTest  {
	/*
	 * 删除用户
	 * 根据id删除用户
	 * */
	@Test
	public void deleteUserTest() throws IOException {
		String resource = "MyBatis.config.xml";
		InputStream inputstream = Resources.getResourceAsStream(resource);
		SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
		SqlSession sqlsession = salsessionfactory.openSession();
		
		int rows=sqlsession.delete("com.ccit.Mapper"+".UserMapper.deleteUser", 4);
		
				if(rows>0) {
					System.out.println("成功删除"+rows+"条数据");
				}else {
					System.out.println("删除数据失败!!!");
				}
				
				
				sqlsession.commit();
				sqlsession.close();
	}
}

3.执行结果

运行MyBatisDeleteTest.java产生的结果
在这里插入图片描述

四、改

1.添加映射

在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码

<!-- 修改用户信息 -->
  <update id="updateUser" parameterType="com.ccit.entity.User">
  update t_user set
  username=#{username},passward=#{passward},gender=#{gender},registTime=#{registTime}
  where id=#{id}
  </update>

2.创建[修改操作]测试类

在com.ccit.test包下创建MyBatisUpdateTest测试类

package com.ccit.test;

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

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.Test;

import com.ccit.entity.User;

public class MyBatisUpdateTest {
	/*
	 * 修改用户信息
	 * 
	 * */
	
	@Test
	public void updateUserTest() throws IOException {
		String resource = "MyBatis.config.xml";
		InputStream inputstream = Resources.getResourceAsStream(resource);
		SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
		SqlSession sqlsession = salsessionfactory.openSession();
		
		User user=new User();
		user.setId(1);
		user.setUsername("吴文英");
		user.setPassward("123");
		user.setRegistTime(new Date());
		
		int rows=sqlsession.update("com.ccit.Mapper"+".UserMapper.updateUser", user);
		
		if(rows>0) {
			System.out.println("成功修改"+rows+"条数据");
		}else {
			System.out.println("修改数据失败!!!");
		}
		sqlsession.commit();
		sqlsession.close();
	}
	
}

3.执行结果

运行MyBatisUpdateTest.java产生的结果
在这里插入图片描述


总结

主要是在com.ccit.test包下创建增删改查四个类
(PS:可以放在一个类中同时测试MyBatis的增删改查,这里分开写更容易理解)
在这里插入图片描述
com.ccit.Mappper下的UserMapper.xml所有代码:

<?xml version="1.0" encoding="UTF-8"?>
<!-- MyBatis约束 -->
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
  <!-- <mapper>是配置文件根元素 namespace为该mapper指定唯一命名空间 -->
<mapper namespace="com.ccit.Mapper.UserMapper">
<!--根据用户姓名获取客户信息-->
<!-- <select>子元素用于执行查询操作的配置
  id:方法名
  parameterType:形参类型
  resultType:返回值类型
  #{}:花括号内是形参名
 -->
 <!-- 通过姓名  精确  查询用户信息 -->
  <select id="findUserByName" resultType="com.ccit.entity.User">
    select * from t_user where username = #{username}
  </select>
  
  <!-- 通过姓名  模糊   查询用户信息 -->
  <select id="findUserByName2" resultType="com.ccit.entity.User" parameterType="String">
  select * from t_user where username like concat('%',#{value},'%');
  </select>
  
  <!-- 添加用户信息 -->
  <insert id="addUser" parameterType="com.ccit.entity.User">
  insert into t_user(username,passward,gender,registTime)
  values(#{username},#{passward},#{gender},#{registTime})
  </insert>
  
  <!-- 修改用户信息 -->
  <update id="updateUser" parameterType="com.ccit.entity.User">
  update t_user set
  username=#{username},passward=#{passward},gender=#{gender},registTime=#{registTime}
  where id=#{id}
  </update>
  
  <!-- 删除用户信息 根据id删除用户-->
  <delete id="deleteUser" parameterType="Integer">
  delete from t_user where id=#{id}
  </delete>
  
</mapper>

下一篇:MyBatis多参数查询


版权声明:本文为m0_49173531原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。