栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号