mybatis 增删改查操作

来源:互联网 发布:ip变换软件 编辑:程序博客网 时间:2024/05/01 13:19

主要目标:对数据库进行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 {//必须注入SqlSessionFactoryprivate 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 mapperPUBLIC "-//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的idparameterType:指定输入参数的类型,这里指定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);}@Testpublic void testFindUserById() {UserDao userDao=new UserDaoImpl(sqlSessionFactory);User user = userDao.findUserById(1);System.out.println(user);}@Testpublic void testFindUserByName() {}@Testpublic void testUpdateUser() {}@Testpublic void testDeleteUser() {UserDao userDao=new UserDaoImpl(sqlSessionFactory);userDao.deleteUser(1);}@Testpublic void testInserUser() {UserDao userDao=new UserDaoImpl(sqlSessionFactory);User user=new User();user.setUsername("程崇树");user.setBirthday(new Date());user.setSex("男");user.setAddress("广西北海");userDao.inserUser(user);}}






0 0
原创粉丝点击