Mybatis新增修改删除数据

1.新增数据
使用MyBatis生成器生成的方法中含有两个新增方法,分别是insert和insertSelective,可以直接使用。这个两个方法的区别是,insertSelective对应的sql语句加入了NULL校验,只会插入数据不为NULL的字段,insert则会插入所有的字段,会插入NULL值。测试方法如下,示例代码:

//新增
@Test
public void insert() throws ParseException{
    
    
	//获取sqlsession
	SqlSession sqlSession=sessionFactory.openSession();
	try{
    
    
		//获取dao/mapper
		UserDAO userDao=sqlSession.getMapper(UserDAO.class);
		
		User user=new User();
		user.setUsername("小度");
		user.setPassword("345");
		user.setDetime(new Date());
		user.setSex(false);
		user.setPowerid(3);
		
		//新增数据,返回受影响的行数
		int num=userDao.insertSelective(user);
		if(num>0){
    
    
			System.out.println("新增成功");
		}
		
		//提交事务
		sqlSession.commit();
	}finally{
    
    
		//关闭sqlSession
		sqlSession.close();
	}
}

2.修改数据
与新增方法类型,MyBatis生成器的方法中已经包含有两个修改方法,分别是updateByPrimryKey、updateByPrimaryKeySelective,区别是updateByPrimryKey会修改所有的字段,为空会插入NULL,updateByPrimaryKeySelective对应的sql语句加入了NULL校验,只会修改不为NULL的字段。测试方法如下,示例代码:

//修改
@Test
public void update() throws ParseException{
    
    
	//获取sqlsession
	SqlSession sqlSession=sessionFactory.openSession();
	try{
    
    
		//获取dao/mapper
		UserDAO userDao=sqlSession.getMapper(UserDAO.class);
		//先查询出需要修改的数据
		/*User user=userDao.selectByPrimaryKey(22);*/
		User user=new User();
		user.setUserid(22);
		user.setUsername("萨克斯");
		
		//修改数据,返回受影响的行数
		int num=userDao.updateByPrimaryKeySelective(user);
		if(num>0){
    
    
			System.out.println("修改成功");
		}
		
		//提交事务
		sqlSession.commit();
	}finally{
    
    
		//关闭sqlSession
		sqlSession.close();
	}
}

3.删除数据
MyBatis生成器生成的方法含有根据主键删除数据的方法deleteByPrimaryKey,示例代码:

//删除
@Test
public void delete(){
    
    
	//获取sqlsession
	SqlSession sqlSession=sessionFactory.openSession();
	try{
    
    
		//获取dao/mapper
		UserDAO userDao=sqlSession.getMapper(UserDAO.class);
		//删除数据,返回受影响的行数
		int num=userDao.deleteByPrimaryKey(31);
		if(num>0){
    
    
			System.out.println("删除成功");
		}
		
		//提交事务
		sqlSession.commit();
	}finally{
    
    
		//关闭sqlSession
		sqlSession.close();
	}
}

4.新增返回主键
编写UserDAO.java文件,添加如下代码:

/**
 * 新增返回主键
 * @param record
 * @return
 */
public int insertReturnId(User record);

编写UserDAO.xml文件,直接复制insertSelective部分代码,在原有的新增方法的基础上添加useGeneratedKeys=“true” keyProperty=“userId”,keyProperty对应的是PO类的属性,示例代码:

<insert id="insertReturnId" parameterType="com.gx.po.User" useGeneratedKeys="true" keyProperty="userid" >
  insert into user
  <trim prefix="(" suffix=")" suffixOverrides=",">
    <if test="userid != null">
      userid,
    </if>
    <if test="username != null">
      username,
    </if>
    <if test="password != null">
      `password`,
    </if>
    <if test="userage != null">
      userage,
    </if>
    <if test="sex != null">
      sex,
    </if>
    <if test="createtime != null">
      createtime,
    </if>
    <if test="detime != null">
      detime,
    </if>
    <if test="powerid != null">
      powerid,
    </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides=",">
    <if test="userid != null">
      #{
    
    userid,jdbcType=INTEGER},
    </if>
    <if test="username != null">
      #{
    
    username,jdbcType=VARCHAR},
    </if>
    <if test="password != null">
      #{
    
    password,jdbcType=VARCHAR},
    </if>
    <if test="userage != null">
      #{
    
    userage,jdbcType=INTEGER},
    </if>
    <if test="sex != null">
      #{
    
    sex,jdbcType=BIT},
    </if>
    <if test="createtime != null">
      #{
    
    createtime,jdbcType=DATE},
    </if>
    <if test="detime != null">
      #{
    
    detime,jdbcType=TIMESTAMP},
    </if>
    <if test="powerid != null">
      #{
    
    powerid,jdbcType=INTEGER},
    </if>
  </trim>
</insert>

猜你喜欢

转载自blog.csdn.net/weixin_44547592/article/details/111329521