MyBatis的增删改查

2023.10.29

        本章学习MyBatis的基本crud操作。

insert

java程序如下:

①使用map集合传参

@Test
    public void testInsertCar(){
        SqlSession sqlSession = SqlSessionUtil.openSession();

        //先将数据放到Map集合中,在sql语句中使用 #{map集合的key} 来完成传值,#{} 等同于JDBC中的 ? ,#{}就是占位符
        Map map = new HashMap<>();
        map.put("carNum", "1029");
        map.put("brand", "马自达");
        map.put("guidePrice", 50.3);
        map.put("produceTime", "2023-10-29");
        map.put("carType", "燃油车");

        // 执行SQL语句(使用map集合给sql语句传递数据)
        int count = sqlSession.insert("insertCar", map);
        System.out.println("插入了几条记录:" + count);
        sqlSession.commit();
        sqlSession.close();
    }

②使用pojo传参

@Test
    public void testInsertCarByPOJO(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        Car car = new Car(null,"1029","马自达",50.3,"2023-10-29","燃油车");

        int count = sqlSession.insert("insertCar",car);
        System.out.println(count);
        sqlSession.commit();
        sqlSession.close();
    }

SQL语句如下:


        insert into t_car(id,car_num,brand,guide_price,produce_time,car_type) values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType});

 运行结果:

MyBatis的增删改查_第1张图片

ps:如果采用map集合传参,#{} 里写的是map集合的key,如果key不存在不会报错,数据库表中会插入NULL。

ps:如果采用POJO传参,#{} 里写的是POJO类中get方法的方法名去掉get之后将剩下的单词首字母变小写(例如:getAge对应的是#{age},getUserName对应的是#{userName}),如果这样的get方法不存在会报错。

delete

需求:根据car_num进行删除。

java程序如下:

@Test
    public void testDeleteById(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        int count = sqlSession.delete("deleteById",2);
        sqlSession.commit();
        sqlSession.close();
    }

sql语句如下:

    
        delete from t_car where id = #{id}
    

运行结果:

MyBatis的增删改查_第2张图片 

 ps:当占位符只有一个的时候,${} 里面的内容可以随便写。

update

java代码如下:

    @Test
    public void testUpdateById(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        Car car = new Car(21L,"1029","宝马7系",66.6,"1999-11-23","燃油车");
        int count = sqlSession.update("updateById",car);
        System.out.println(count);
        sqlSession.commit();
        sqlSession.close();
    }

sql语句如下:

    
        update t_car set
                         car_num = #{carNum}, brand = #{brand},
                         guide_price = #{guidePrice}, produce_time = #{produceTime},
                         car_type = #{carType}
        where id = #{id}
    

运行结果:

MyBatis的增删改查_第3张图片

select 

查询一条数据:

需求:查询id为21的Car信息

java代码如下:

    @Test
    public void testSelectCarById(){
        // 获取SqlSession对象
        SqlSession sqlSession = SqlSessionUtil.openSession();
        // 执行SQL语句
        Object car = sqlSession.selectOne("selectCarById", 21);
        System.out.println(car);
    }

sql语句如下:

    

运行结果:

MyBatis的增删改查_第4张图片

ps:当查询结果的字段名和java类的属性名对应不上的话,可以采用as关键字起别名 。

查询多条数据:

java代码如下:

    @Test
    public void testSelectCarAll(){
        // 获取SqlSession对象
        SqlSession sqlSession = SqlSessionUtil.openSession();
        // 执行SQL语句
        List cars = sqlSession.selectList("selectCarAll");
        // 输出结果
        cars.forEach(car -> System.out.println(car));
    } 
  

sql语句如下:

    
    

由于我数据库只有一条记录,先手动添加几条记录:

MyBatis的增删改查_第5张图片

运行查询语句,结果为:

 MyBatis的增删改查_第6张图片

ps:在SQL Mapper配置文件中标签的namespace属性可以翻译为命名空间,这个命名空间主要是为了防止sqlId冲突的。

你可能感兴趣的:(Mybatis学习,mybatis,java,开发语言)