您的位置:首页 > 其它

mybatis 增删改查操作

2015-08-04 16:16 405 查看
主要目标:对数据库进行CRUD的操作

1.javaBean User

package cn.itcast.domain;

import java.util.Date;

public class User {
	private int id;
	private String username;
	private Date birthday;
	private String sex;
	//省略getter setter方法
	private String address;
}
2.UserDao 主要定义接口

package cn.itcast.dao;

import java.util.List;

import cn.itcast.domain.User;

public interface UserDao {
	public User findUserById(int id);//根据用户id查询数据库
	public List<User>  findUserByName(String name);//模糊查询
	public void deleteUser(int id);//根据id删除用户
	public void updateUser(User user);//更新用户
	public void inserUser(User user);//向数据库中插入一条数据
}
3.UserDaoImpl 实现上述定义的接口--对于创建SqlSessionFactory用来创建SqlSession的工厂类进行构造方法注入

其中sqlSession.方法中的sqlSession.selectOne("test.findById", id); 第一个参数是user.xml中的命名空间+对应的id值

package cn.itcast.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;

public class UserDaoImpl implements UserDao {
	//必须注入SqlSessionFactory
	private SqlSessionFactory sqlSessionFactory;
	public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
		this.sqlSessionFactory=sqlSessionFactory;
	}
	public User findUserById(int id) {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user=sqlSession.selectOne("test.findById", id);
		sqlSession.close();
		return user;
	}

	public List<User> findUserByName(String name) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		List<User> users = sqlSession.selectList("test.findUserByName", name);
		sqlSession.close();
		return users;
	}

	public void updateUser(User user) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		sqlSession.update("test.updateUser", user);
		sqlSession.commit();
		sqlSession.close();
	}

	public void deleteUser(int id) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		sqlSession.delete("test.deleteUser", id);
		sqlSession.commit();
		sqlSession.close();
	}
	public void inserUser(User user) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		sqlSession.insert("test.insertUser", user);
		sqlSession.commit();
		sqlSession.close();
	}

}
4.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">
<mapper namespace="test">
	<!-- 在映射文件中配置很多sql语句 -->
	<!-- 需求:通过id查询用户表的记录 -->
	<!-- 通过select执行数据库查询 -->
	<!-- 
		id:标识 映射文件中的sql
		将sql语句封装到mappedStatement对象中,因此将id称为statement的id
		parameterType:指定输入参数的类型,这里指定int类型
		#{} 标识一个占位符
		#{id}其中的id标识接受输入的参数,参数名称就是id,如果输入类型参数是简单类型#{id}的id可以是value或者其他任意值
		resultType:指定sql输出结果的所映射的java对象类型,select 指定resultType将表中的单条记录封装成一个java对象
	 -->
	<select id="findById" parameterType="int" resultType="cn.itcast.domain.User">
		select * from user where id=#{id}
	</select>
	<!--根据用户名模糊查询 可以返回多条记录 -->
	<!-- resultType:指定就是单条记录所映射的java对象类型 -->
	<!-- 
		${}:表示拼接sql串,将接受到参数的内容不加任何修饰拼接在sql中
		使用${}拼接sql,引起sql注入
		${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只能使用value
	 -->
	<select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.domain.User">
		select * from user where username like "%${value}%"
	</select>
	<update id="updateUser" parameterType="cn.itcast.domain.User">
		update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
	</update>
	<delete id="deleteUser" parameterType="int">
		delete from user where id=#{id}
	</delete>
	<insert id="insertUser" parameterType="cn.itcast.domain.User">
		insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address});
	</insert>
</mapper>
测试数据

package cn.itcast.test;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.domain.User;

public class UserDaoImplTest {
	private static SqlSessionFactory sqlSessionFactory;
	static InputStream in;
	static{
		//mybatis的配置文件
		String resource="SqlMapConfig.xml";
		try {
			//得到配置文件流
			in = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			throw new RuntimeException();
		}
		//1.创建回话工厂,传入的配置文件信息
		sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
	}
	@Test
	public void testFindUserById() {
		UserDao userDao=new UserDaoImpl(sqlSessionFactory);
		User user = userDao.findUserById(1);
		System.out.println(user);
	}

	@Test
	public void testFindUserByName() {
		
	}

	@Test
	public void testUpdateUser() {
		
	}

	@Test
	public void testDeleteUser() {
		UserDao userDao=new UserDaoImpl(sqlSessionFactory);
		userDao.deleteUser(1);
	}

	@Test
	public void testInserUser() {
		UserDao userDao=new UserDaoImpl(sqlSessionFactory);
		User user=new User();
		user.setUsername("程崇树");
		user.setBirthday(new Date());
		user.setSex("男");
		user.setAddress("广西北海");
		userDao.inserUser(user);
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: