mybatis(3)---使用mybatis对表进行CRUD操作

前一节介绍过如何使用mybatis查询数据库表t_user中的数据,本节介绍如何使用mybatis对数据库表t_user进行crud操作

步骤如下:

1、UserMapper.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,
 	namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
  	例如namespace="com.cn.mapping.userMapper"就是com.cn.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
  <mapper namespace="com.cn.mapping.UserMapper">
      <!-- 
      	在select标签中编写查询的SQL语句, 设置select标签的id属性为selectUser,
      	id属性值必须是唯一的,不能够重复
      	使用parameterType属性指明查询时使用的参数类型,
      	resultType属性指明查询返回的结果集类型
      	resultType="com.cn.vo.UserVO" 就表示将查询结果封装成一个UserVO类的对象返回
     	UserVO类就是t_user表所对应的实体类
     -->     
     <!-- 
         	根据id查询得到一个user对象
      -->
     <select id="selectUser" parameterType="int" 
        resultType="com.cn.vo.UserVO">
         select * from t_user where id=#{id}
     </select>
     
     <!-- 
     	2、创建新用户 
     	因为创建新用户需要传递参数,参数用parameterType指定
     	#{username},其中username为实体类UserVO中的字段,必须对应
     -->
     <insert id="insertUser" parameterType="com.cn.vo.UserVO">
     	insert into t_user(
     		id,                       
     		username,
     		password
     	)values(
     		#{id},
     		#{username},
     		#{password}
     	)
     </insert>
     
     <!-- 3、修改用户 -->
     <update id="updateUser" parameterType="com.cn.vo.UserVO">
     	update t_user t set t.username=#{username},
     					    t.password=#{password}
     	where t.id=#{id}
     </update>
     
     <!-- 
     	4、删除用户
      	根据id删除,需要传递的参数为int类型
      -->
     <delete id="deleteUser" parameterType="int">
     	delete t.* from t_user t where t.id=#{id}
     </delete>
     
     <!-- 
     	5、查询所有的用户 
     	查询无需传递参数不需要parameterType,但是查询需要返回结果集,需要设置结果类型resultType
     -->
     <select id="selectAllUser" resultType="com.cn.vo.UserVO">
     	select t.* from t_user t 
     </select>
 </mapper>

2、测试

crud测试需要创建session工厂和session.这些步骤都是公用的,可以创建一个工具类,代码如下:

package com.cn.utils;

import java.io.IOException;
import java.io.Reader;

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

/**
 * mybatis工具类
 * */
public class MybatisUtil {
	/**
	 * 创建sqlSessionFacoty
	 * @throws IOException 
	 * */
	public static SqlSessionFactory getSqlSessionFactory(){
		String resource="mybatis.cfg.xml";
		Reader reader=null;
		SqlSessionFactory sqlSessionFactory=null;
		try{
			//本次不使用类加载器加载配置文件,而是通过 mybatis提供的Resources类加载mybatis的配置文件
			 reader=Resources.getResourceAsReader(resource);
			 sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
		}catch(Exception e){
			e.printStackTrace();
		}
		return sqlSessionFactory;
	}
		
		
	/**
	 * 得到sqlSession
	 * 适应于:提交事务操作的增加、删除和修改操作的sqlSession获取
	 * */
	public static SqlSession getSqlSession(boolean isAutoCommit){
		return getSqlSessionFactory().openSession(isAutoCommit);
	}
	
	/**
	 * 得到sqlSession
	 * 适用于查询方式的获得sqlSession
	 * */
	public static SqlSession getSqlSession(){
		return getSqlSessionFactory().openSession();
	}	
	
}

2.1、通过用户id查询用户测试代码如下:

package com.cn.test;

import org.apache.ibatis.session.SqlSession;

import com.cn.utils.MybatisUtil;
import com.cn.vo.UserVO;

/**
 * 通过id查询用户测试
 * */
public class SelectUserById {
	public static void main(String[] args) {
		//1.通过MybatisUtil工具类获取sqlSession
		SqlSession sqlSession=MybatisUtil.getSqlSession();
		//2.映射sql的标识字符串
		String statement="com.cn.mapping.UserMapper.selectUser";
		//3.执行查询操作
		UserVO userVO=sqlSession.selectOne(statement,1);
		//4.打印结果
		System.out.println(userVO.toString());
		
	}
}

2.2、查询所有用户,测试代码如下:

package com.cn.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.cn.utils.MybatisUtil;
import com.cn.vo.UserVO;

/**
 * 查询所有用户测试
 * */
public class SelectAllUser {
	public static void main(String[] args) {
		//1.通过mybatis工具类获得sqlSession
		SqlSession sqlSession=MybatisUtil.getSqlSession();
		//2.映射sql的标识字符串
		String statement="com.cn.mapping.UserMapper.selectAllUser";
		//3.执行session操作
		List<UserVO> userList=sqlSession.selectList(statement);
		//4.循环遍历结果集
		for(UserVO userVO:userList){
			System.out.println(userVO.toString());
		}
	}
}

2.3、新增用户,测试代码如下:

package com.cn.test;

import org.apache.ibatis.session.SqlSession;

import com.cn.utils.MybatisUtil;
import com.cn.vo.UserVO;

public class InsertUser {
	public static void main(String[] args) {
		//1.工具类获得sqlSession
		SqlSession session=MybatisUtil.getSqlSession(true);
		//2.sql映射标识字符串
		String statement="com.cn.mapping.UserMapper.insertUser";
		//3.执行session操作
		UserVO userVO=new UserVO(1101,"Rise","123456");
		int result=session.insert(statement,userVO);
		System.out.println(result);
	}
}

2.4、删除用户,测试代码如下:

package com.cn.test;

import org.apache.ibatis.session.SqlSession;

import com.cn.utils.MybatisUtil;

/**
 * 删除用户
 * */
public class DeleteUser {
	public static void main(String[] args) {
		//1.获得sqlSession
		SqlSession session=MybatisUtil.getSqlSession(true);
		//2.执行sql映射标识的字符串
		String statement="com.cn.mapping.UserMapper.deleteUser";
		//3.执行session操作
		int result=session.delete(statement, 1101);
		System.out.println(result);
	}
}


2.5、修改用户,测试代码如下:

package com.cn.test;

import org.apache.ibatis.session.SqlSession;

import com.cn.utils.MybatisUtil;
import com.cn.vo.UserVO;

/**
 * 修改用户测试
 * */
public class UpdateUser {
	public static void main(String[] args) {
		//1.获得sqlSession
		SqlSession session=MybatisUtil.getSqlSession(true);
		//2.执行sql映射的标识字符串
		String statement="com.cn.mapping.UserMapper.updateUser";
		//3.执行session操作
		UserVO userVO=new UserVO();
		userVO.setId(1);
		userVO.setUsername("admin");
		userVO.setPassword("123456");
		int result=session.update(statement, userVO);
		System.out.println(result);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值