注解开发
注解开发
使用注解开发
-
注解在接口上实现
@Select("select * from user") List<User> getUser();
-
需要在核心配置文件中绑定接口
<mapper class="cn.pinked.dao.UserMapper"/>
-
测试
@Test public void getUser() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUser(); for (User user : userList) { System.out.println(user); } sqlSession.close(); }
-
本质:反射机制实现
-
底层:动态代理
CRUD
可以在工具类创建时实现自动提交事务
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession(true);
}
编写接口
public interface UserMapper {
@Select("select * from user")
List<User> getUser();
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
@Insert("insert into user(id, name, pwd) values (#{id}, #{name}, #{password})")
int addUser(User user);
@Update("update user set name = #{name}, pwd = #{password} where id = #{id}")
int updateUser(User user);
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id") int id);
}
测试类
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// List<User> userList = mapper.getUser();
// for (User user : userList) {
// System.out.println(user);
// }
//
// User user = mapper.getUserById(3);
// System.out.println(user);
//
// int res = mapper.addUser(new User(5, "王五", "123456"));
//
// int res = mapper.updateUser(new User(5, "王大五", "12345"));
//
// mapper.deleteUser(5);
sqlSession.close();
关于@Param()注解
- 基本类型的参数或者String类型需要加上
- 引用类型不需要加
- 如果只有一个基本类型的话可以忽略
- 在SQL中应用的是@Param("uid")中设定的属性名