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

原文地址:https://www.cnblogs.com/chuijingjing/p/9858475.html

时间: 2024-11-07 07:48:08

MyBatis 对数据库进行CRUD操作的相关文章

完成对数据库的CRUD操作

PS:查询相对复杂,要处理结果集,增删改则不用. 1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 8 public class CRUD { 9 10 /** 11 * @param args 12 * @throws ClassNotFoundExc

数据库的CRUD操作

一:数据库的CRUD操作,C是指create新增,R是指retrieve检索,U是指update更改,D是指delete删除 SQL语句分为3类: 1.DDL指数据定义语言如:create,drop,alter等: 2.DML指数据操纵语言:CRUD: 3.DCL指数据控制语言:备份语言之类. 数据库类型分为3大类: 1.关系型数据库:用表存储数据,易于检索,冗余度较小,现在用的就是关系型数据库. 2.层次型数据库,不常见 3.网状型数据库,不常见 二:CRUD操作语法 首先创建一个数据库,一个

4月18 数据库的CRUD操作

php主要是实现B/S Brower Server;此外还有C/S:Client Server暂时不考虑: LAMP: Linux系统 A阿帕奇服务器 Mysql数据库 Php语言,而现在学的是在windows下的, mysql:常用代码   即创建表添加列 create table CeShi1( Uid varchar(50) primary key, Pwd varchar(50), Name varchar(50), Nation varchar(50), foreign key(Nat

尚硅谷-MyBatis的CRUD操作

项目结构: User实体类代码: package com.atguigu.mybatis.bean; public class User { private int id; private String name; private int age; public User() { super(); } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = ag

数据库CRUD操作以及MyBatisd的配置使用

• 业务字段设计 • 数据库创建 • CRUD操作 • MyBatis集成 • 注解和XML定义 • ViewObject和DateTool • 首页开发 • 业务字段设计 实体: • 数据库创建 GUI版本管理工具创建,然后通过GUI转SQL: • CRUD操作 insert into table_name (列1, 列2,...) VALUES (值1, 值2,....): select 列名1,列名2 from 表名称 where 条件: 条件: between 1 and 2 order

javaweb(三十三)——使用JDBC对数据库进行CRUD

一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的executeUpdate方法,用于向数据库发送增.删.改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化). Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的Result

深入分析JavaWeb Item28 -- 使用JDBC对数据库进行CRUD

一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的executeUpdate方法,用于向数据库发送增.删.改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化). Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的Result

JAVA实现DAO基本层CRUD操作

随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项目开发中.对数据库的CRUD操作我们一般都是无法避免的操作,尽管hibernate封装的非常完美,可是.因为本人对这个框架的底层原理不是非常了解,每次使用的时候心里总认为没底.代码一旦出现异常,非常多时候都没法高速有效地解决.因此,为了让代码异常处理风险控制在自己的可控范围内,还是决定先将数据的CR

javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的executeUpdate方法,用于向数据库发送增.删.改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化). Statement.executeQuery方法用于向数据库发