码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis开发-->增删改

时间:2015-11-27 19:17:30      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

本篇将实现增删改功能,因为查询在上篇已经实现了。

1.实现数据的“增”功能:

在UserDao.java文件中新增一个方法:

	/**
	 * 新增一个用户
	 * @param user
	 */
	public void addUser(User user);

然后在UserMapper.xml中配置好这个方法的sql:

	<!-- 新增一个user -->
	<!-- seGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到Student的id属性 -->
	<insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">
		insert into t_user(user_name,user_age,user_address) values(#{userName},#{userAge},#{userAddress})
	</insert>

然后在UserTest.java类中测试这个方法:

package cn.clear.mybatis.test;

import java.io.IOException;
import java.io.Reader;
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 cn.clear.mybatis.dao.UserDao;
import cn.clear.mybatis.model.Article;
import cn.clear.mybatis.model.User;

/**
 * 测试mybatis
 * @author clear
 *
 */
public class UserTest {
	//定义sessionFactory属性
	private static SqlSessionFactory sessionFactory;
	private static Reader reader;

	static{
		
		try {
			//读取配置文件信息
			reader = Resources.getResourceAsReader("configuration.xml");
			//构建sessionFactory
			sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		addUser();
		findUserByIdAndFindAllUser();
	}

	public static void findUserByIdAndFindAllUser() {
		SqlSession session = sessionFactory.openSession();
		try{
			//使用原始selectOne查询	
			//User user = session.selectOne("cn.clear.mybatis.model.UserMapper.selectUserById",1);
			//使用dao接口查询
			UserDao userDao = session.getMapper(UserDao.class);
			User user = userDao.selectUserById(1);
			System.out.println(user.getId()+" "+user.getUserName()+" "+user.getUserAge()+" "+user.getUserAddress());
			System.out.println("------------------------感谢华丽丽的分割线-----------------------------");
			List<User> userList = userDao.selectAllUser();
			for (User u : userList) {
				
				System.out.println(u.getId()+" "+u.getUserName()+" "+u.getUserAge()+" "+u.getUserAddress());
			}
			
		}finally{
			session.close();
		}
	}
	
	public static void addUser(){
		
		User user = new User();
		user.setUserName("小三");
		user.setUserAge(25);
		user.setUserAddress("中国广州天河体育中心");
		
		SqlSession session = sessionFactory.openSession();
		try {
			UserDao userDao = session.getMapper(UserDao.class);
			userDao.addUser(user);
			session.commit();
			System.out.println("当前新增用户id为:"+user.getId());
		} finally {
			session.close();
		}
	}
}

运行测试类,console打印:

当前新增用户id为:3
1 小子 26 广州天河万菱国际中心
------------------------感谢华丽丽的分割线-----------------------------
3 小三 25 中国广州天河体育中心
2 小二 27 中国广州天河体育中心
1 小子 26 广州天河万菱国际中心

于是,我们成功地将增功能实现了。

下面实现修改(update)功能:

在UserDao.java中新增方法:

        /**
	 * 更新用户
	 * @param user
	 */
	public void updateUser(User user);    

在UserMapper.xml中配置改方法的sql:

	<!-- 更新用户 -->
	<update id="updateUser" parameterType="user">
		update t_user set user_name=#{userName},user_age=#{userAge},user_address=#{userAddress} where id=#{id}
	</update>

在UserTest.java中写测试方法:

package cn.clear.mybatis.test;

import java.io.IOException;
import java.io.Reader;
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 cn.clear.mybatis.dao.UserDao;
import cn.clear.mybatis.model.Article;
import cn.clear.mybatis.model.User;

/**
 * 测试mybatis
 * @author clear
 *
 */
public class UserTest {
	//定义sessionFactory属性
	private static SqlSessionFactory sessionFactory;
	private static Reader reader;

	static{
		
		try {
			//读取配置文件信息
			reader = Resources.getResourceAsReader("configuration.xml");
			//构建sessionFactory
			sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		//addUser();
		update();
		findUserByIdAndFindAllUser();
		//delete();
		//getUserArticle();
	}

	public static void findUserByIdAndFindAllUser() {
		SqlSession session = sessionFactory.openSession();
		try{
			//使用原始selectOne查询	
			//User user = session.selectOne("cn.clear.mybatis.model.UserMapper.selectUserById",1);
			//使用dao接口查询
			UserDao userDao = session.getMapper(UserDao.class);
			User user = userDao.selectUserById(1);
			System.out.println(user.getId()+" "+user.getUserName()+" "+user.getUserAge()+" "+user.getUserAddress());
			System.out.println("------------------------感谢华丽丽的分割线-----------------------------");
			List<User> userList = userDao.selectAllUser();
			for (User u : userList) {
				
				System.out.println(u.getId()+" "+u.getUserName()+" "+u.getUserAge()+" "+u.getUserAddress());
			}
			
		}finally{
			session.close();
		}
	}
	
	public static void addUser(){
		
		User user = new User();
		user.setUserName("小三");
		user.setUserAge(25);
		user.setUserAddress("中国广州天河体育中心");
		
		SqlSession session = sessionFactory.openSession();
		try {
			UserDao userDao = session.getMapper(UserDao.class);
			userDao.addUser(user);
			session.commit();
			System.out.println("当前新增用户id为:"+user.getId());
		} finally {
			session.close();
		}
	}
	
	public static void update(){
		SqlSession session = sessionFactory.openSession();
		try{
			
			UserDao userDao = session.getMapper(UserDao.class);
			User u = userDao.selectUserById(2);
			u.setUserName("小二");
			u.setUserAddress("广州市天河区正佳广场");
			userDao.updateUser(u);
			session.commit();
		}finally{
			session.close();
		}
	}
}

运行测试类,console打印:

1 小子 26 广州天河万菱国际中心
------------------------感谢华丽丽的分割线-----------------------------
3 小三 25 中国广州天河体育中心
2 小二 27 广州市天河区正佳广场
1 小子 26 广州天河万菱国际中心

update成功。

下面实现删功能(delete)。

在UserDao中增加一个方法:

	/**
	 * 删除用户
	 * @param id
	 */
	public void deleteUser(Integer id);

在UserMapper.xml中配置sql:

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

在UserTest.java类中增加测试方法:

package cn.clear.mybatis.test;

import java.io.IOException;
import java.io.Reader;
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 cn.clear.mybatis.dao.UserDao;
import cn.clear.mybatis.model.Article;
import cn.clear.mybatis.model.User;

/**
 * 测试mybatis
 * @author clear
 *
 */
public class UserTest {
	//定义sessionFactory属性
	private static SqlSessionFactory sessionFactory;
	private static Reader reader;

	static{
		
		try {
			//读取配置文件信息
			reader = Resources.getResourceAsReader("configuration.xml");
			//构建sessionFactory
			sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		//addUser();
		//update();
		delete();
		findUserByIdAndFindAllUser();
	}

	public static void findUserByIdAndFindAllUser() {
		SqlSession session = sessionFactory.openSession();
		try{
			//使用原始selectOne查询	
			//User user = session.selectOne("cn.clear.mybatis.model.UserMapper.selectUserById",1);
			//使用dao接口查询
			UserDao userDao = session.getMapper(UserDao.class);
			User user = userDao.selectUserById(1);
			System.out.println(user.getId()+" "+user.getUserName()+" "+user.getUserAge()+" "+user.getUserAddress());
			System.out.println("------------------------感谢华丽丽的分割线-----------------------------");
			List<User> userList = userDao.selectAllUser();
			for (User u : userList) {
				
				System.out.println(u.getId()+" "+u.getUserName()+" "+u.getUserAge()+" "+u.getUserAddress());
			}
			
		}finally{
			session.close();
		}
	}
	
	public static void addUser(){
		
		User user = new User();
		user.setUserName("小三");
		user.setUserAge(25);
		user.setUserAddress("中国广州天河体育中心");
		
		SqlSession session = sessionFactory.openSession();
		try {
			UserDao userDao = session.getMapper(UserDao.class);
			userDao.addUser(user);
			session.commit();
			System.out.println("当前新增用户id为:"+user.getId());
		} finally {
			session.close();
		}
	}
	
	public static void update(){
		SqlSession session = sessionFactory.openSession();
		try{
			
			UserDao userDao = session.getMapper(UserDao.class);
			User u = userDao.selectUserById(2);
			u.setUserName("小二");
			u.setUserAddress("广州市天河区正佳广场");
			userDao.updateUser(u);
			session.commit();
		}finally{
			session.close();
		}
	}
	
	public static void delete(){
		SqlSession session = sessionFactory.openSession();
		try{
			UserDao userDao = session.getMapper(UserDao.class);
			userDao.deleteUser(3);
			session.commit();
		}finally{
			session.close();
		}
	}
}

运行测试类,console打印:

1 小子 26 广州天河万菱国际中心
------------------------感谢华丽丽的分割线-----------------------------
2 小二 27 广州市天河区正佳广场
1 小子 26 广州天河万菱国际中心

So,完成。

MyBatis开发-->增删改

标签:

原文地址:http://www.cnblogs.com/clear5/p/5001118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!