SSM项目从零开始到入门007-使用接口完成增删改查操作

使用接口完成增删改查操作

本文将继续前边的例子完成CRUD(增加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)首字母简写)的操作。

CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能。

在之前的demo例子mybatis测试类里直接调用mapper文件完了一个查询操作,现在我们使用后接口进行方法的定义、

首先新建立dao接口包和接口实现类包以及对应实体的UserDao接口和UserDaoImpl实现类


在接口中定义CRUD的操作方法



package com.jsx.dao;


import java.util.List;


import com.jsx.pojo.User;


public interface UserDao {
	/**
	 * 添加用户
	 * @param user
	 */
	public void addUser(User user);
	/**
	 * 根据id删除用户
	 * @param id
	 */
	public void deleteUser(Long id);
	/**
	 * 更新用户信息
	 * @param user
	 */
	public void updateUserById(User user);
	/**
	 * 根据用户id返回用户信息
	 * @param id
	 * @return
	 */
	public User findUserById(Long id);
	/**
	 * 根据用户名和密码返回用户信息
	 * @param username
	 * @param password
	 * @return
	 */
	public User findUserByNameAndPwd(User user);
	/**
	 * 返回所有用户信息
	 * @return List<User>
	 */
	public List<User> findUserAll();
}


然后去实现类实现接口中定义的方法,由于方法执行需要sqlSession,所以要把sqlSession已构造函数的形式传入

然后实现所有方法

package com.jsx.dao.impl;


import java.util.List;


import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;


import com.jsx.dao.UserDao;
import com.jsx.pojo.User;


public class UserDaoImpl implements UserDao{
	private SqlSession sqlSession;
	public UserDaoImpl(SqlSession sqlSession){
		this.sqlSession = sqlSession;
	}
	@Override
	public void addUser(User user) {
		sqlSession.insert("UserMapper.addUser",user);
	}
	@Override
	public void deleteUserById(Long id) {
		sqlSession.delete("UserMapper.deleteUserById",id);
	}
	@Override
	public void updateUser(User user) {
		sqlSession.update("UserMapper.updateUser",user);
	}
	@Override
	public User findUserById(Long id) {
		return sqlSession.selectOne("UserMapper.findUserById", id);
	}
	@Override
	public User findUserByNameAndPwd(User user) {
		return sqlSession.selectOne("UserMapper.findUserByNameAndPwd",user);
	}
	@Override
	public List<User> findUserAll() {
		return sqlSession.selectList("UserMapper.findUserAll");
	}
}



在UserMapper配置文件定义接口方法实现的sql语句

<?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="UserMapper">
	<!-- 插入语句定义 -->
	<insert id="addUser" parameterType="com.jsx.pojo.User">
		INSERT INTO 
		t_user(user_name,password,name,age,sex,birthday,created,updated)
		VALUES
		(
		#{userName},
		#{password},
		#{name},#{age},
		#{sex},
		#{birthday},
		NOW(),NOW());
	</insert>
	<!-- 删除语句定义 -->
	<delete id="deleteUserById">
		delete from t_user where id = #{id}
	</delete>
	<!-- 修改语句定义 -->
	<update id="updateUser">
		UPDATE t_user
		SET
		user_name = #{userName},
		password = #{password},
		name = #{name},
		age = #{age},
		sex = #{sex},
		birthday = #{birthday},
		updated = NOW()
		WHERE
		(id = #{id});
	</update>
	<!-- 查询 id 标识(唯一) resultType结果集映射的java对象类型 -->
	<select id="findUserById" resultType="com.jsx.pojo.User">
		select * ,user_name as username from t_user where id = #{id}
	</select>
	<select id="findUserByNameAndPwd" resultType="com.jsx.pojo.User">
		select * ,user_name as username from t_user  
		where user_name = #{userName} and password = #{password}
	</select>
	<select id="findUserAll" resultType="com.jsx.pojo.User">
		select *,user_name as username from t_user
	</select>
</mapper>



添加junit支持,并创建UserDao的测试类
在pom.xml文件添加
<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<scope>test</scope>
</dependency>

在UserDao右键点击创建junit测试类,路径选择到/mybatis01/src/test/java


完成对上先写的方法测试


package com.jsx.test;

import static org.junit.Assert.fail;

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.jsx.dao.UserDao;
import com.jsx.dao.impl.UserDaoImpl;
import com.jsx.pojo.User;

public class UserDaoTest {
	SqlSession sqlSession =null;
	UserDao userDao  =null;
	@Before
	public void setUp() throws Exception {
		//mybatis配置文件 
		String resource = "mybatis-config.xml";
		//读取配置文件信息
		InputStream is = Resources.getResourceAsStream(resource );
		//构件SqlSessionFactory
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
		//获取sqlSession
		sqlSession = sf.openSession();
		userDao = new UserDaoImpl(sqlSession);
	}

	@Test
	public void testAddUser() {
		
		User user = new User();
		user.setuserName("dsadsad");
		user.setPassword("sadsadsa");
		user.setName("1234dsa");
		user.setAge(18);
		user.setSex(2);
		user.setBirthday(new Date());
		userDao.addUser(user);
		System.out.println(user.toString());
		sqlSession.commit();
	}

	@Test
	public void testDeleteUserById() {
		userDao.deleteUserById(36l);
		sqlSession.commit();
	}

	@Test
	public void testUpdateUser() {
		User user = userDao.findUserById(37l);
		user.setName("落尘曦1");
		userDao.updateUser(user);
		sqlSession.commit();
		
	}

	@Test
	public void testFindUserById() {
		User user = userDao.findUserById(26l);
		System.out.println(user.toString());
	}

	@Test
	public void testFindUserByNameAndPwd() {
		User user = new User();
		user.setuserName("123");
		user.setPassword("123");
		user = userDao.findUserByNameAndPwd(user);
		System.out.println(user.toString());
	}

	@Test
	public void testFindUserAll() {
		List<User> findUserAll = userDao.findUserAll();
		for (User user : findUserAll) {
			System.out.println(user.toString());
		}
	}
	
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心歌技术

打赏不能超过你的早餐钱!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值