zoukankan      html  css  js  c++  java
  • 2 . Mybatis — 增-删-改

     数据库是 test,表是user,,Bean那些已经准备好 自己去get and  set 和 toString 等..

    1、导入gav

    2、编写配置文件(核心配置 和 映射配置)

     我们学了最基础的 查询。现在操作 增加操作:

    核心配置文件:

    <?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="crud">
        <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象-->
        <insert id="insertDemo" parameterType="com.bihu.Bean.User">
            <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可-->
           insert into user values(#{id},#{username},#{password})
       </insert>
    </mapper>
    映射配置文件

    映射配置文件:

    <?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="crud">
        <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象-->
        <insert id="insertDemo" parameterType="com.bihu.Bean.User">
            <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可-->
           insert into user values(#{id},#{username},#{password})
       </insert>
    </mapper>
    映射配置文件

    3.编写测试类

    import com.bihu.Bean.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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class MybatisTest {
    
        @Test
        public void db_show() throws IOException {
    
            //因为插入操作数据对象是 冲 前端->Controller->Service->DAO层   所以这里模拟下DAO层
            User user = new User();
            user.setId(10088);
            user.setUsername("BiHu");
            user.setPassword("123456");
    
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //因为是插入操作 所以这里是 insert方法,第二个参数是 占位符数据源
            sqlSession.insert("crud.insertDemo",user);
            //因为我们是更新操作 所以要提交事务 ,查询不需要
            sqlSession.commit();
            sqlSession.close();
        }
    
    
    
    }
    插入数据 - 测试类

    4.查看数据库

    插入操作完事!


    更改操作:【其实也可以单条件和多条件 看你喜欢】

    核心配置文件不用改 用最上面那个一样的。。。。

    映射文件:

    <?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="crud">
            <!--更新 那就是update标签 parameterType 表示那个对象是占位符数据的来源对象-->
           <update id="updateTest" parameterType="com.bihu.Bean.User">
               update user set username = #{username},password = #{password} where id = #{id}
           </update>
        </mapper>
    映射文件

    测试文件:

    import com.bihu.Bean.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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class MybatisTest {
    
        @Test
        public void db_show() throws IOException {
    
            //因为更新操作数据对象是 从 前端->Controller->Service->DAO层   所以这里模拟下DAO层
            User user = new User();
            user.setId(10088);
            user.setUsername("LZ");
            user.setPassword("654321");
    
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //因为是插入操作 所以这里是 update方法,第二个参数是 占位符数据源
            sqlSession.update("crud.updateTest",user);
            //因为我们是更新操作 所以要提交事务 ,查询不需要
            sqlSession.commit();
            sqlSession.close();
        }
    
    
    
    }
    测试文件

     完事!


    删除操作  更新和删除都存在条件,分 单条件(一个条件)  和 多条件(多个条件判断),这样 映射文件中的占位符就会有两种写法:

    单条件删除:

    核心配置文件不变 依照最上面那个来写:

    映射文件:

    <?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="crud">
            <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象-->
            <!--因为这是单条件写法 下面的parameterType是Integer型的 占位符中写什么都可以 但一定的是Integer型的-->
           <delete id="deleteTest" parameterType="java.lang.Integer">
                delete from user where id = #{random}
            </delete>
        </mapper>
    映射配置文件

    测试类:

    import com.bihu.Bean.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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class MybatisTest {
    
        @Test
        public void db_show() throws IOException {
    
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源
            sqlSession.delete("crud.deleteTest",10088);
            //因为我们是更新操作 所以要提交事务 ,查询不需要
            sqlSession.commit();
            sqlSession.close();
        }
    
    
    
    }
    测试类

     ID为10088 的 LZ就被删除了

    所以这里要注意的就是   parameterType 。

    多条件删除

    映射文件:

    <?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="crud">
            <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象-->
           <delete id="deleteTest" parameterType="com.bihu.Bean.User">
                delete from user where id = #{id} and username = #{username}
            </delete>
        </mapper>
    映射文件

    测试类:

    import com.bihu.Bean.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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class MybatisTest {
    
        @Test
        public void db_show() throws IOException {
    
            //模拟数据来源
            User user = new User();
            user.setId(3);
            user.setUsername("qq333");
            user.setPassword("565de98");
    
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源
            sqlSession.delete("crud.deleteTest",user);
            //因为我们是更新操作 所以要提交事务 ,查询不需要
            sqlSession.commit();
            sqlSession.close();
        }
    
    
    
    }
    测试类

     qq333就没了...这是 ID +  usename 的删除操作。

     

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15122211.html

  • 相关阅读:
    Xcode8中Swift3.0适配问题
    Swift3.0语法变化
    一起聊聊 Swift 3.0
    Swift 3.0 的 open,public,internal,fileprivate,private 关键字
    leetcode先刷_Binary Tree Level Order Traversal II
    java + memcached安装
    POJ 2533-Longest Ordered Subsequence(DP)
    网络协议——IP
    使用百度地图——入门
    取消延时功能
  • 原文地址:https://www.cnblogs.com/bi-hu/p/15122211.html
Copyright © 2011-2022 走看看