**
Mybatis注解
**
注解的加入让我们的Mybatis开发简单了很多,我们直接来看项目文件,可以直接感到注解的便捷。
不使用注解时(这里的QueryVo只是按照条件查询,可以忽略这个文件):
使用注解时:
最直观的感受就是resources包下少了UserDao.xml这个配置文件,那既然少了这个配置文件,那么我们就要用UserDao接口里面配置一些注解来达到之前的效果。下面是UserDao接口:
public interface UserDao {
/**
* 查询所有用户
* @return
*/
@Select("select * from user")
List<User> findAll();
/**
* 保存用户
* @param user
*/
@Insert("insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday})")
void saveUser(User user);
/**
* 根据姓名模糊查询
* @param name
* @return
*/
@Select("select * from user where username like #{username}")
List<User> findByName(String name);
}
现在我们在test中测试一下查询所有
/**
* 测试基于注解的mybatis使用
*/
@Test
public void testFindAll() throws IOException {
InputStream stream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
SqlSession session = sqlSessionFactory.openSession();
UserDao dao = session.getMapper(UserDao.class);
List<User> users = dao.findAll();
for (User user:users){
System.out.println(user);
}
session.close();
stream.close();
}
结果
User{id=41, username='老王', address='北京', sex='男', birthday=Wed Feb 28 07:47:08 CST 2018}
User{id=42, username='小二王', address='北京金燕龙', sex='女', birthday=Sat Mar 03 05:09:37 CST 2018}
User{id=45, username='update user clear cache', address='山东省', sex='男', birthday=Mon Mar 05 02:04:06 CST 2018}
User{id=46, username='老王', address='北京', sex='男', birthday=Thu Mar 08 07:37:26 CST 2018}
User{id=48, username='小马宝莉', address='北京修正', sex='女', birthday=Fri Mar 09 01:44:00 CST 2018}
User{id=50, username='mybatis update user', address='北京市顺义区', sex='女', birthday=Wed Oct 14 19:34:00 CST 2020}
User{id=51, username='AnnoTestSave', address='邹平市', sex='男', birthday=Tue Oct 20 19:36:38 CST 2020}
我们通过注解的方式实现了之前的效果,当然,现在SqlMapConfig.xml这个配置文件还不可以删掉。当然有全注解的方式,后面我会说。