mybatis学习笔记(1)-xml实体映射和测试类

1.user.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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user">

	<!-- id:statement的id 或者叫做sql的id -->
	<!-- parameterType:声明输入参数的类型 -->
	<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
	<!-- #{}:输入参数的占位符,相当于jdbc的? -->
	<select id="queryUserId" parameterType="int"
		resultType="com.skiff.www.domain.User">
		select * from user where id = #{id}
	</select>

	<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->
	<!-- resultType的配置和返回一个结果的配置一样 -->
	<select id="queryUserByUsername1" parameterType="string"
		resultType="com.skiff.www.domain.User">
		SELECT * FROM user WHERE username LIKE #{username}
	</select>

	<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
	<select id="queryUserByUsername2" parameterType="string"
		resultType="com.skiff.www.domain.User">
		SELECT * FROM `user` WHERE username LIKE '%${value}%'
	</select>

	<!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 -->
	<!-- 保存用户 -->
	<insert id="saveUser" parameterType="com.skiff.www.domain.User">
		<!-- selectKey 标签实现主键返回 -->
		<!-- keyColumn:主键对应的表中的哪一列 -->
		<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
		<!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql -->
		<!-- resultType:设置返回的id的类型 -->
		<selectKey keyColumn="id" keyProperty="id" order="AFTER"
			resultType="int">
			SELECT LAST_INSERT_ID()
		</selectKey>
		INSERT INTO `user`
		(username,birthday,sex,address) VALUES
		(#{name},#{birthday},#{sex},#{address})
	</insert>

	<!-- 更新用户 -->
	<update id="updateUserById" parameterType="com.skiff.www.domain.User">
		UPDATE `user` SET
		username = #{name},
		address = #{address},
		birthday = #{birthday} WHERE id = #{id}
	</update>

	<!-- 删除用户 -->
	<delete id="deleteUserById" parameterType="int">
		delete from user where
		id=#{id}
	</delete>



</mapper>



2.采用junit测试增删改查


/**     
 * @文件名称: TestUser.java   
 * @描述: TODO  
 * @作者:  一叶扁舟(skiff)
 * @时间:2018年1月9日 上午10:16:07  
 * @版本:V1.0     
 */ 
package test.com.skiff.www.testUser;

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.Before;
import org.junit.Test;

import com.skiff.www.domain.User;

/**  
 * @类功能说明:    
 * @作者: 一叶扁舟 (skiff)
 * @创建时间:2018年1月9日 上午10:16:07  
 * @版本:V1.0  
 */
public class TestUser {
	
	
		private SqlSessionFactory sqlSessionFactory = null;
		
		@Before
		public void  init() throws IOException{
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			
			//2.加载sqlMapConfig.xml文件
			InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
			//3.创建一个factory工厂
			sqlSessionFactory = builder.build(is);
	
		}
		
		@Test
		public void testSelect(){
			User user = new User();
			user.setName("一叶扁舟");
			user.setAddress("福州");
			user.setSex("1");
			user.setBirthday(new Date());
//			4.创建一个session
			SqlSession  session  = sqlSessionFactory.openSession();
			
			// 5. 执行SqlSession对象执行查询,获取结果User
			// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数;
			User user1 = session.selectOne("queryUserId",1);

			// 6. 打印结果
			System.out.println(user1);

			// 7. 释放资源
			session.close();
			
		}
		
		@Test
		public void testSaveUser(){
			
			User user = new User();
			user.setName("一叶扁舟");
			user.setAddress("福州");
			user.setSex("1");
			user.setBirthday(new Date());
			SqlSession session = sqlSessionFactory.openSession();
			session.insert("saveUser",user);
			System.out.println(user);
			session.commit();
			session.close();
			
		}
		
		@Test
		public void queryName(){
			
			// 4. 创建SqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();

			// 5. 执行SqlSession对象执行查询,获取结果User
			// 查询多条数据使用selectList方法
			List<Object> list = sqlSession.selectList("queryUserByUsername1", "%张%");

			// 6. 打印结果
			for (Object user : list) {
				System.out.println(user);
			}

			// 7. 释放资源
			sqlSession.close();
		}
		
		
		@Test
		public void testQueryUserByUsername2() throws Exception {
			// 4. 创建SqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();

			// 5. 执行SqlSession对象执行查询,获取结果User
			// 查询多条数据使用selectList方法
			List<Object> list = sqlSession.selectList("queryUserByUsername2", "王");

			// 6. 打印结果
			for (Object user : list) {
				System.out.println(user);
			}

			// 7. 释放资源
			sqlSession.close();
		}
		@Test
		public void testUpdateUserById() {
			// 4. 创建SqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();

			// 5. 执行SqlSession对象执行更新
			// 创建需要更新的User
			User user = new User();
			user.setId(30);
			user.setName("关羽");
			user.setSex("1");
			user.setBirthday(new Date());
			user.setAddress("魔都");

			sqlSession.update("updateUserById", user);

			// 需要进行事务提交
			sqlSession.commit();

			// 7. 释放资源
			sqlSession.close();
		}
		
		@Test
		public void testDeleteUserById() {
			// 4. 创建SqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();

			// 5. 执行SqlSession对象执行删除
			sqlSession.delete("deleteUserById", 30);

			// 需要进行事务提交
			sqlSession.commit();

			// 7. 释放资源
			sqlSession.close();
		}
		
}











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值