通过注解去处理映射,省略 mapper.xml ,直接用注解代替,这样可以使代码更加简洁。
但是需要注意,一些简单映射可以使用 ibtis 包下的 SQL 注解还好,但是如果是复杂映射的话,使用注解反而不好处理。
比如,字段:user_id ,实体类:userId,这种不一致的状况处理起来便很麻烦,所以写 SQL 时候最好还是使用 XML 去完成。
XML 文件
代码示例:
mapper 接口
//相当于 XML 文件中的
测试类
@Testpublic void test() throws IOException {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();try {IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);List list = mapper.getUser();for(User user:list){String info= String.format("id:%s,用户名:%s,密码:%s,人员创建时间:%s",user.getId(),user.getName(),user.getPwd(),user.getCreateTime() );System.out.println(info);}}finally{sqlSession.close();}}
运行结果:
可以看出时间字段无法处理,查询不到数据
代码示例:
mapper 接口
//相当于 XML 文件中的标签@Insert("insert into user (id,name) values(#{id},#{name})")int addUser(User user);
测试类
@Testpublic void test() throws IOException {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();try {IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);user.setId(999);user.setName("感冒灵");int i = mapper.addUser(user);qlSession.commit();//全部正常执行后,提交事务System.out.println(i);}finally{sqlSession.close();}}
运行结果:
代码示例:
mapper 接口
//相当于 XML 文件中的标签@Delete("delete from user where id = #{id}")int deleteUser(User user);
测试类
@Testpublic void test() throws IOException {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();try {IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);User user = new User();user.setId(888);user.setName("感冒灵");int i = mapper.updateUser(user);sqlSession.commit();//全部正常执行后,提交事务System.out.println(i);}finally{sqlSession.close();}}
运行结果:
代码示例:
mapper 接口
//相当于 XML 文件中的标签@Update("update user set id = #{id} where name = #{name}")int updateUser(User user);
测试类
@Testpublic void test() throws IOException {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();try {IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);User user = new User();user.setId(888);user.setName("感冒灵");int i = mapper.updateUser(user);sqlSession.commit();//全部正常执行后,提交事务System.out.println(i);}finally{sqlSession.close();}}
运行结果:
@Param 注解是搭配 CRUD 注解使用的。
@Param 的作用
@Select("select * from user where id = #{id} and name = #{name}")
List getUser(@Param("id") int id,@Param("name") String name);
@Select("select * from user where name = #{username}")
List getUser(@Param("username") String name);
@Param 的注意事项
使用步骤:
org.projectlombok lombok 1.18.10
@data 注解是使用频率最高的注解。
加上该注解之后自动生成这些方法,就不需要在编写这部分代码了。
下一篇:现货黄金K线图的“温柔一刀”