利用注解开发就不需要mapper.xml映射文件了
将MybatisUtils工具类的getSession( ) 方法设置自动提交事务
public static SqlSession getSession(){
return sqlSessionFactory.openSession(true);
}
接口方法添加注解
@Select("select id,name,pwd as password from user limit #{startIndex},#{pageSize}")
List<User> selectUser(Map<String,Integer> map);
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int currentPage = 1;
int pageSize = 2;
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",(currentPage-1)*pageSize);
map.put("pageSize",pageSize);
List<User> users = mapper.selectUser(map);
for (User user: users){
System.out.println(user);
}
session.close();
}
@Select("select id,name,pwd as password from user where id = #{id}")
User selectUserById(@Param("id") int id);
@Test
public void selectUserById() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
}
@Select("select id,name,pwd as password from user where name = #{name} and pwd = #{password}")
User selectUserByNP(@Param("name") String name, @Param("password") String password);
@Test
public void selectUserByNP() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserByNP("张三","12321");
System.out.println(user);
session.close();
}
@Select("select id,name,pwd as password from user where name = #{name} and pwd = #{password}")
User selectUserByNP2(Map<String,Object> map);
@Test
public void selectUserByNP2() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("name","王五");
map.put("password","12123");
User user = mapper.selectUserByNP2(map);
System.out.println(user);
session.close();
}
@Select("select id,name,pwd as password from user where name like #{value}")
List<User> selectUserLike(@Param("value") String value);
@Test
public void selectUserLike(){
SqlSession sqlSession = MybatisUtils.getSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectUserLike("%王%");
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
@Insert("insert into user (id,name,pwd) values (#{id},#{name},#{password})")
int addUser(User user);
@Test
public void addUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(12,"王二","8dji");
int i = mapper.addUser(user);
System.out.println(i);
session.commit();
session.close();
}
@Update("update user set name=#{name},pwd=#{password} where id = #{id}")
int updateUser(User user);
@Test
public void updateUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
user.setName("闰土");
user.setPassword("123538");
int i = mapper.updateUser(user);
System.out.println(i);
session.commit();
session.close();
}
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id") int id);
@Test
public void deleteUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int i = mapper.deleteUser(12);
System.out.println(i);
session.commit();
session.close();
}
在方法接受多个参数的情况下要使用@Param注解给参数命名,如果参数是 JavaBean ,则不能使用@Param。不使用@Param注解时,参数只能有一个,并且是JavaBean
#{} 的作用主要是替换预编译语句中的占位符,${} 的作用是直接进行字符串替换