zoukankan      html  css  js  c++  java
  • MyBatis 对数据库进行CRUD操作

    1.update修改

    uodate修改也可以使用之前的机制在配置文件中直接编写sql

    但是update语句的set字句中是根据传入的值决定的,

    此时可以通过Mybatis提供的标签实现判断动态拼接update语句:

        <!-- update修改 -->
        <update id="updateOne">
            update user
            <set>
                <if test="name != null">name = #{name},</if>
                <if test="age != 0">age = #{age},</if>
            </set>
            where id = #{id}
        </update>

    测试类:

    // 根据配置文件创建sqlSessionFactory
        private SqlSessionFactory factory = null;
        @Before
        public void before() throws Exception{
            //1.读取MyBatis核心配置文件
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            //2.根据配置文件创建sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
        }
        
        /**
         * update操作
         */
        @Test
        public void test07(){
            User user = new User();
            user.setId(3);
            user.setName("sss");
            user.setAge(12);
            // 1.创建sqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            session.update("cn.tedu.mybatis.beans.UserMapper.updateOne",user);
            // 3.提交事务
            session.commit();
        }

    2.select查询

    select查询也可以使用之前的机制在配置文件中直接编写sql

    但是select语句的where字句中拼接哪些查询字段是根据传入的值决定的

    此时可以通过MyBatis提供的标签实现判断,动态拼接select语句:

        <!-- select查询 -->    
        <select id="queryMany" resultType="cn.tedu.mybatis.beans.User">
            select * from user
            <where>
                <if test="id != 0">id = #{id}</if>
                <if test="name != null">and name = #{name}</if>    
                <if test="age != 0">and age = #{age}</if>    
            </where>
        </select>

    测试类:

        // 根据配置文件创建sqlSessionFactory
        private SqlSessionFactory factory = null;
        @Before
        public void before() throws Exception{
            //1.读取MyBatis核心配置文件
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            //2.根据配置文件创建sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
        }
        
        /**
         * select操作
         */
        @Test
        public void test08(){
            User user = new User();
            user.setId(3);
            user.setName("sss");
            user.setAge(12);
            // 1.创建sqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user);
            // 3.遍历结果
            System.out.println(userx);
        }    // 根据配置文件创建sqlSessionFactory
        private SqlSessionFactory factory = null;
        @Before
        public void before() throws Exception{
            //1.读取MyBatis核心配置文件
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            //2.根据配置文件创建sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
        }
        
        /**
         * select操作
         */
        @Test
        public void test08(){
            User user = new User();
            user.setId(3);
            user.setName("sss");
            user.setAge(12);
            // 1.创建sqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            User userx = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryMany",user);
            // 3.遍历结果
            System.out.println(userx);
        }

    3.insert操作

    insert插入也可以使用之前的机制在配置文件中直接编写sql

    但是insert语句的参数和值的列表拼接哪些字段是根据差u纳入的值决定的

    此时可以通过MyBatis提供的标签实现判断,动态拼接insert语句:

        <!-- insert操作 -->
        <insert id="insertOne">
            insert into user
            <trim prefix="(" suffix=")" suffixOverrides=",">
                id,
                <if test="name != null">name,</if>
                <if test="age != 0">age,</if>
            </trim>
            values
            <trim prefix="(" suffix=")" suffixOverrides=",">
                id,
                <if test="name != null">#{name},</if>
                <if test="age !=0">#{age},</if>
            </trim>
            <!-- insert into user (id,name,age) values (null,#{name},#{age}) -->
        </insert>

    trim:去掉字符串两端的多余的空格

    测试类:

        // 根据配置文件创建sqlSessionFactory
        private SqlSessionFactory factory = null;
        @Before
        public void before() throws Exception{
            //1.读取MyBatis核心配置文件
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            //2.根据配置文件创建sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
        }
        
        /**
         * insert操作
         */
        @Test
        public void test09(){
            User user = new User();
            user.setName("hhh");
            user.setAge(33);
            // 1.创建SqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            session.insert("cn.tedu.mybatis.beans.UserMapper.insertOne",user);
            // 3.提交事务
            session.commit();
        }

    4.delet操作

    delete删除也可以使用之前的机制在配置文件中直接编写sql

    但是delete语句的删除条件、拼接哪些字段,是根据传入的值决定的

    此时可以通过MyBatis提供的标签实现判断,动态拼接delete语句:

        <!-- delete 操作 -->
        <delete id="deleteOne">
            delete from user
            <where>
                <if test="id != 0">id = #{id}</if>
                <if test="name != null">and name = #{name}</if>
                <if test="age != 0">and age = #{age}</if>
            </where>
        </delete>    
        <!-- delete 操作2 -->
        <delete id="deleteOne2">
            delete from user where id in
            <foreach collection="list" open="(" close=")"
                separator="," item="id">
                #{id}
            </foreach>
        </delete>

    测试类:

        // 根据配置文件创建sqlSessionFactory
        private SqlSessionFactory factory = null;
        @Before
        public void before() throws Exception{
            //1.读取MyBatis核心配置文件
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            //2.根据配置文件创建sqlSessionFactory
            factory = new SqlSessionFactoryBuilder().build(in);
        }
        
        /**
         * delete操作
         */
        @Test
        public void test10(){
            User user = new User();
            user.setId(8);
            // user.setName("cjj");
            user.setAge(24);
            // 1.创建SqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne",user);
            // 3.提交事务
            session.commit();
        }
        
        /**
         * delete操作2
         */
        @Test
        public void test11(){
            // 0.准备数据
            List<Integer> list = new ArrayList<Integer>();
            list.add(3);
            list.add(6);
            list.add(10);
            // 1.创建SqlSession
            SqlSession session = factory.openSession();
            // 2.执行操作
            session.insert("cn.tedu.mybatis.beans.UserMapper.deleteOne2",list);
            // 3.提交事务
            session.commit();
        }
  • 相关阅读:
    细菌 状态压缩
    素数
    骑士问题(knight)
    魔法石的诱惑
    平面上的最接近点对
    救援行动(save)
    优先队列
    leetcode 92. 反转链表 II
    leetcode 91. 解码方法
    leetcode 39. 组合总和
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9858475.html
Copyright © 2011-2022 走看看