MyBatis如何通过注解实现增删改查及注解与XML的区别

  上篇已经说到,使用与功能同名的注解可代替SQL代码实现CRUD的功能。因此,使用注解开发配合面向接口编程逐渐变成新的开发趋势。当然现在是 ssm 框架开发,究其本源,仍是如此。

注解和xml配置的区别

注解
优点:编写简单,代码量少
缺点:写到源码中的,如果需要维护修改,必须修改源码

XML
优点:不用修改源码就可以修改配置,可以实时进行配置的更新
缺点:代码比较复杂,结构不如注解清晰。

注意
  采用注解开发的时候,在同一个dao下不能有xml文件,就是说要么用注解要么就都用配置文件开发。

  1. 同一个文件不能同时使用注解和配置文件开发。
  2. 如果是不同的接口文件,可以使用不同的方法,但工作中不建议这样使用。
  3. 在注解开发中,如何在插入新的用户后获取用户的自增长ID

  因为在增删改查的实现过程中,增删改操作都需要提交事务。因此,可在工具类中配置自动提交事务功能

public static SqlSession getSqlSession() {
    //开启自动提交事务
    return sqlSessionFactory.openSession(true);
}

虽然此方式可以免去每次都要调用SqlSession对象的close方法手动关闭SqlSession连接,但还是不推荐的。

关于每个实现功能的注解名,不再过多赘述。详见代码:
接口

//增加一个用户
@Insert("insert into user(id,name,password) values(#{id},#{name},#{password})")
int addUser(User user);
	
//删除用户
@Delete("delete from user where id = #{id}")
int deleteUserById(int id);
	
//修改用户
@Update("update user set `name`=#{name}, `password`=#{password} where `id`=#{id}")
int updateUser(User user);
	
//查询用户(方法存在多个参数时,所有的参数前面必须加上@Param注解)
@Select("select * from user where id = #{id}")
User getUserById(int id);

注意
必须要将接口绑定到核心配置文件中。

测试类

		    @Test
		    //增加用户
		    public void addUser() {
		        SqlSession sqlSession = MybatisUtils.getSqlSession();
		        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		        int i = mapper.addUser(new User(6, "西八", "19888592832"));
		        if (i>0) {
		            System.out.println("用户插入成功");
		        }
		        sqlSession.commit();
		        sqlSession.close();
		    }
		
		    @Test
		    //删除用户
		    public void deleteUserById() {
		        SqlSession sqlSession = MybatisUtils.getSqlSession();
		        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		        int i = mapper.deleteUserById(6);
		        if (i>0) {
		            System.out.println("用户删除成功");
		        }
		        sqlSession.commit();
		        sqlSession.close();
		    }
		
		    @Test
		    //修改用户
		    public void updateUser() {
		        SqlSession sqlSession = MybatisUtils.getSqlSession();
		        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		        int i = mapper.updateUser(new User(6, "西北!!", "wndsb"));
		        if (i>0) {
		            System.out.println("修改用户成功");
		        }
		        sqlSession.commit();
		        sqlSession.close();
		    }
		
		    @Test
		    //查询用户
		    public void getUserById() {
		        SqlSession sqlSession = MybatisUtils.getSqlSession();
		        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		        User user = mapper.getUserById(1);
		        System.out.println(user);
		        sqlSession.close();
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值