文章目录
使用注解开发
本质:反射机制实现
底层:动态代理
1、注解在接口上的实现
publicinterfaceUserMapper{@Select("select * from user")List<User>getUsers();}
2、使用注解时,需要在核心配置文件中绑定接口
<mappers><mapperclass="com.xiao.dao.UserMapper"/></mappers>
3、测试使用
publicclassUserMapperTest{@Testpublicvoidtest(){SqlSession sqlSession=MybatisUtils.getSqlSession();//底层主要靠反射实现UserMapper mapper= sqlSession.getMapper(UserMapper.class);List<User> users= mapper.getUsers();for(User user: users){System.out.println(user);}
sqlSession.close();}}
使用注解完成CRUD
只需修改接口和测试类即可。
之前在使用XML的方式进行CRUD操作时,增(insert)、改(update)、删(delete)时,都需要手动进行事务提交操作sqlsession.commit()
。
查看openSession()的源码
自动提交
查(select)
- 接口
@Select("select * from user where id = #{id}")UsergetUserByID(@Param("id")int id);
- 测试类
publicclassUserMapperTest{@Testpublicvoidtest(){SqlSession sqlSession=MybatisUtils.getSqlSession();//底层主要靠反射实现UserMapper mapper= sqlSession.getMapper(UserMapper.class);User userByID= mapper.getUserByID(1);System.out.println(userByID);
sqlSession.close();}}
增(insert)
- 接口
@Insert("insert into user(id,name,pwd) value (#{id},#{name},#{password})")intaddUser(User user);
- 实现类
publicclassUserMapperTest{@Testpublicvoidtest(){SqlSession sqlSession=MybatisUtils.getSqlSession();//底层主要靠反射实现UserMapper mapper= sqlSession.getMapper(UserMapper.class);
mapper.addUser(newUser(5,"张飞","1456156"));
sqlSession.close();}}
改(update)
- 接口
@Update("update user set name = #{name},pwd=#{password} where id = #{id}")intupdateUser(User user);
- 测试类
publicclassUserMapperTest{@Testpublicvoidtest(){SqlSession sqlSession=MybatisUtils.getSqlSession();//底层主要靠反射实现UserMapper mapper= sqlSession.getMapper(UserMapper.class);
mapper.updateUser(newUser(5,"赵云","565423"));
sqlSession.close();}}
删(delete)
- 接口
@Delete("delete from user where id = #{id}")intdeleteUser(int id);
- 测试类
publicclassUserMapperTest{@Testpublicvoidtest(){SqlSession sqlSession=MybatisUtils.getSqlSession();//底层主要靠反射实现UserMapper mapper= sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
sqlSession.close();}}