mybatis学习之路----非代理方式的增删改查用法

来源:互联网 发布:比淘宝便宜又好的网站 编辑:程序博客网 时间:2024/06/05 18:52

点滴记载,点滴进步,愿自己更上一层楼。


这里记录的是非代理方式的增删改查用法,代理方式会在以后再写。

废话不多说,进入主题。

项目还是在上篇    mybatis学习之路----框架搭建   的基础上进行

上篇看到查询用的是<select>标签,那么更新,插入,删除用的就是<update><insert><delete>

上代码 

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"><!-- namespace命名空间,有种java package的感觉,sql隔离,这个名字必须唯一并且不能省略不写也不能为空,不过名字倒是可以随意,只要不跟另外一个文件中的名字一样即可--><mapper namespace="test">    <!-- 数据库跟model属性的映射map,如果你定义的model的属性跟数据库的字段名称不完全一样,         并且想让mybatis自动将查询结果封装到model中,这个是必须的,         当然如果你的model中的属性名称跟数据库字段完全一样,那么这里就不需要了。 -->    <resultMap id="userMap" type="com.soft.mybatis.model.User">        <id column="id" property="id"/>        <result column="username" property="username"/>        <result column="password" property="password"/>        <result column="create_date" property="createDate"/>    </resultMap>    <!-- 查询标签,用于放置查询语句,id属性在本映射文件中必须唯一,并且作为该条查询语句的唯一标识,也叫statementid         parameterType 输入参数类型,可以为基本类型,包装类型         resultType 返回的结果对象集,可以为基本类型,包装类型         resultMap  上面的<resultMap 的id         ****  注意下面的sql的参数的写法,在参数只有一个,               并且是基本类型的情况写 #{id} 可以随意写,写成#{kadksdjf}也没问题-->    <select id="findUserById" parameterType="int" resultMap="userMap">        select * from t_user where id=#{id}    </select>    <!-- 如果你的model中的属性跟数据库表字段对不上,就无法完全将数据库中的数据映射到你的model         这里仅作为跟上面对比用-->    <select id="findUserById2" parameterType="int" resultType="com.soft.mybatis.model.User">        select * from t_user where id=#{id}    </select>    <!-- 查询多条 不需要参数-->    <select id="findAllUser" resultMap="userMap">        select * from t_user    </select>    <!-- 新增用户 insert标签,由于传入参数为一个model,所以sql中的参数必须跟model中的属性一样。 -->    <insert id="add" parameterType="com.soft.mybatis.model.User">        INSERT into t_user (username,password,create_date) values(#{username},#{password},#{createDate})    </insert>    <!-- 更新用户,由于传入参数为一个model,所以sql中的参数必须跟model中的属性一样。 -->    <update id="update" parameterType="com.soft.mybatis.model.User">        update t_user set username=#{username},password=#{password} where id=#{id}    </update>    <!-- 更新用户,parameterType为基本类型,参数名随意。 -->    <delete id="deleteById" parameterType="int">        delete from t_user  where id=#{id}    </delete></mapper>


user查询接口   UserDao.java

package com.soft.mybatis.dao;import com.soft.mybatis.Util.SqlsessionUtil;import com.soft.mybatis.model.User;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 java.util.List;/** * Created by xuweiwei on 2017/9/7. */public interface UserDao {    /**     * 通过id查询信息,     *   这个xml中通过resultMap接收     * @param id 表id     * @return     */    User findUserById(int id);    /**     * 通过id查询信息,     *   这个xml中通过resultType接收     * @param id 表id     * @return     */    User findUserById2(int id);    /**     * 查询所有用户信息     * @return     */    List<User> findAllUser();    /**     * 新增用户信息     * @return     */    int add(User user);    /**     * 更新用户信息     * @return     */    int update(User user);    /**     * 删除用户信息     * @return     */    int deleteById(int id);}

实现类  UserDaoImpl.java

package com.soft.mybatis.dao.impl;import com.soft.mybatis.Util.SqlsessionUtil;import com.soft.mybatis.dao.UserDao;import com.soft.mybatis.model.User;import org.apache.ibatis.session.SqlSession;import java.util.List;/** * Created by xuweiwei on 2017/9/7. */public class UserDaoImpl implements UserDao {    public User findUserById(int id) {        User user = null;        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            user = sqlSession.selectOne("test.findUserById", id);        } catch (Exception e) {            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return user;    }    public User findUserById2(int id) {        User user = null;        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            user = sqlSession.selectOne("test.findUserById2", id);        } catch (Exception e) {            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return user;    }    public List<User> findAllUser() {        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            return sqlSession.selectList("test.findAllUser");        } catch (Exception e) {            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return null;    }    public int update(User user) {        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            int result =  sqlSession.insert("test.update",user);            // commit            sqlSession.commit();            return result;        } catch (Exception e) {            sqlSession.rollback();            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return 0;    }    public int add(User user) {        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            int result =  sqlSession.insert("test.add",user);            // commit            sqlSession.commit();            return result;        } catch (Exception e) {            sqlSession.rollback();            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return 0;    }    public int deleteById(int id) {        SqlSession sqlSession = null;        try {            sqlSession = SqlsessionUtil.getSqlSession();            int result =  sqlSession.delete("test.deleteById",id);            // commit            sqlSession.commit();            return result;        } catch (Exception e) {            sqlSession.rollback();            e.printStackTrace();        } finally {            SqlsessionUtil.closeSession(sqlSession);        }        return 0;    }}

完毕,下面开始测试。

测试代码 UserDaoTest.java

package com.soft.mybatis.dao;import com.soft.mybatis.dao.impl.UserDaoImpl;import com.soft.mybatis.model.User;import org.junit.Test;import java.util.Date;import java.util.List;/** * Created by xuweiwei on 2017/9/7. */public class UserDaoTest {    private UserDao dao = new UserDaoImpl();    @Test    public void findUserById() throws Exception {        User user = dao.findUserById(16);        System.out.println("findUserById:" + user);    }    @Test    public void findUserById2() throws Exception {        User user = dao.findUserById2(16);        System.out.println("findUserById2:" + user);    }    @Test    public void findAllUser() throws Exception {        List<User> users = dao.findAllUser();        for(User user:users){            System.out.println("findAllUser:" + user);        }    }    @Test    public void add() throws Exception {        User user = new User();        user.setUsername("ceshi");        user.setPassword("123456");        user.setCreateDate(new Date());        int  result = dao.add(user);        System.out.println("add:" + result);    }    @Test    public void update() throws Exception {        User user = new User();        user.setId(17);        user.setUsername("小黄");        user.setPassword("123456");        user.setCreateDate(new Date());        // 先查询出要删除的数据        System.out.println("更新前:" + commonFindUserById(17));        int result = dao.update(user);        System.out.println("update:" + result);        // 先查询出要删除的数据        System.out.println("更新后:" + commonFindUserById(17));    }    @Test    public void delete() throws Exception {        // 先查询出要删除的数据        System.out.println("删除前:" + commonFindUserById(18));        int result = dao.deleteById(18);        System.out.println("delete:" + result);        // 先查询出要删除的数据        System.out.println("删除后:" + commonFindUserById(18));    }    private User commonFindUserById(int id){        return  dao.findUserById(id);    }}

测试前数据库数据信息。


 findAllUser 测试结果



新增测试结果:


新增数据后数据库信息,框住的为新增的内容



更新结果:


更新执行后数据库数据信息



删除结果:



删除后数据库不在有主键为18的数据



以上就是mybatis的基本的增删改查的用法。