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

来源:互联网 发布:网络音乐播放器hifi 编辑:程序博客网 时间:2024/05/16 17:06
使用接口完成增删改查操作

本文将继续前边的例子完成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;}@Overridepublic void addUser(User user) {sqlSession.insert("UserMapper.addUser",user);}@Overridepublic void deleteUserById(Long id) {sqlSession.delete("UserMapper.deleteUserById",id);}@Overridepublic void updateUser(User user) {sqlSession.update("UserMapper.updateUser",user);}@Overridepublic User findUserById(Long id) {return sqlSession.selectOne("UserMapper.findUserById", id);}@Overridepublic User findUserByNameAndPwd(User user) {return sqlSession.selectOne("UserMapper.findUserByNameAndPwd",user);}@Overridepublic 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_userSETuser_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;@Beforepublic void setUp() throws Exception {//mybatis配置文件 String resource = "mybatis-config.xml";//读取配置文件信息InputStream is = Resources.getResourceAsStream(resource );//构件SqlSessionFactorySqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);//获取sqlSessionsqlSession = sf.openSession();userDao = new UserDaoImpl(sqlSession);}@Testpublic 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();}@Testpublic void testDeleteUserById() {userDao.deleteUserById(36l);sqlSession.commit();}@Testpublic void testUpdateUser() {User user = userDao.findUserById(37l);user.setName("落尘曦1");userDao.updateUser(user);sqlSession.commit();}@Testpublic void testFindUserById() {User user = userDao.findUserById(26l);System.out.println(user.toString());}@Testpublic void testFindUserByNameAndPwd() {User user = new User();user.setuserName("123");user.setPassword("123");user = userDao.findUserByNameAndPwd(user);System.out.println(user.toString());}@Testpublic void testFindUserAll() {List<User> findUserAll = userDao.findUserAll();for (User user : findUserAll) {System.out.println(user.toString());}}}






阅读全文
0 0