吹静静

欢迎QQ交流:592590682

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();
    }

 

posted on 2018-10-26 20:14  吹静静  阅读(557)  评论(0编辑  收藏  举报