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();
        }
  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9858475.html
Copyright © 2011-2022 走看看