MyBatis的命名空间方式的增删改查操作(二)下

简介: MyBatis的命名空间方式的增删改查操作(二)

四.修改 update


四.一 全部修改时


接口:


int update(User user);


实现方法:


@Override
  public int update(User user) {
    SqlSession sqlSession=SqlSessionFactoryUtils.getSession();
    int result= sqlSession.update("com.yjl.pojo.User.updateUser",user);
    sqlSession.commit();  //手动提交
    sqlSession.close();
    return result;
  }


测试方法:


@Test
  public void updateTest(){
    UserDao userDao=new UserDaoImpl();
    User user=new User();
    user.setId(1); //编号为1
    user.setName("修改老蝴蝶");
    user.setAge(25);
    user.setSex("男");
    user.setDescription("这是一个修改的老蝴蝶");
    userDao.update(user);
  }


xml 修改语句


<update id="updateUser" parameterType="com.yjl.pojo.User">
    update user set name=#{name},sex=#{sex},age=#{age},description=#{description}
    where id=#{id}
  </update>


运行时:


20190617215808642.png


数据库:


20190617215829875.png


确实发生了修改的操作。是正确的。


四.二 部分修改字段时


xml 不变。

测试方法:


@Test
  public void update1Test(){
    UserDao userDao=new UserDaoImpl();
    User user=new User();
    user.setId(1);
    user.setDescription("这是一个老蝴蝶,只修改描述");
    userDao.update(user);
  }


20190617215959891.png


传入的值为空,


20190617220026274.png


这样修改的话,#{name} 时取出的值 是默认的String 为null, #{age} 也是默认的Integer, 为null. 表示修改的传入值是null .


四.三 查询时修改


将id =1 的值设置成原先的值


20190617220227550.png


xml 不变,测试方法为:


@Test
  public void update2Test(){
    UserDao userDao=new UserDaoImpl();
    SqlSession sqlSession=SqlSessionFactoryUtils.getSession();
    User user=sqlSession.selectOne("com.yjl.pojo.User.getById",1);
    user.setDescription("这是一个老蝴蝶,只修改描述");
    userDao.update(user);
  }


20190617220409378.png


20190617220425888.png


可以正确的进行修改。


如果一个表中 有几十个字段,而现在只修改 一个描述字段,会将以前所有的字段都进行修改, 很浪费资源的。 希望 可以修改哪一个,就只修改哪一个, 后面的动态sql 语句会学习的。


五. 删除 delete


接口:


int delete(int id);


实现类:


@Override
  public int delete(int id) {
    SqlSession sqlSession=SqlSessionFactoryUtils.getSession();
    int result= sqlSession.delete("com.yjl.pojo.User.deleteById",id);
    sqlSession.commit();  //手动提交
    sqlSession.close();
    return result;
  }


测试方法:


@Test
  public void deleteTest(){
    UserDao userDao=new UserDaoImpl();
    userDao.delete(1);
  }


xml 语句:


  <!-- 删除记录 -->
  <delete id="deleteById" parameterType="int">
    delete from user where id=#{id}
  </delete>


写正常的删除语句。


运行:


20190617220857796.png


20190617220909457.png


六. 注意点


这就是原来 ibatis 时的命名空间的 单表基本操作, 当然 ,也有其他的操作形式,这里暂不讲解,会在Mapper 时进行详细的讲解。


另外注意, sql 语句时, 如:


delete from user where id=#{id}


加上; 和不加; 都可以运行, 但不建议加; 号。


谢谢!!!

相关文章
|
5天前
|
XML Java 数据库连接
【MyBatis】MyBatis操作数据库(一)
【MyBatis】MyBatis操作数据库(一)
13 1
|
6天前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
12 1
|
7天前
|
XML Java 数据库连接
如何使用 MyBatis 来进行增、删、改、查操作
如何使用 MyBatis 来进行增、删、改、查操作
16 2
|
6天前
|
SQL 存储 Java
基于MyBatis的增删改查的基础操作
基于MyBatis的增删改查的基础操作
11 0
|
2天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
13 2
|
21天前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
5天前
|
SQL Java 数据库连接
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
19 0
|
5天前
|
SQL Java 数据库连接
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
12 0
|
29天前
|
SQL Java 数据库连接
MyBatis 操作数据库
MyBatis 操作数据库
|
1月前
|
算法 Java 数据库连接
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档