MyBatis(七):使用注解替代xml文件
-
定义:Mybatis提供了一种方法来配置查询语句,就是在查询方法上增加注解。
-
这个方法对于简单的语句能有效简化代码量,而且不需要配置xml文件。
-
但是对于复杂的语句就无法实现了
-
-
注解在接口上实现,Mapper.xml就不需要配置了
public interface UserMapper { @Select("select * from user") List<User> getUserList(); }
-
主配置文件中配置的不再是Mapper.xml文件,而是Mapper接口
-
使用Mapper接口的时候,还能启用xml文件,但是xml文件必须在同一个包下而且同名,见配置解析
<mappers> <mapper class="com.rzp.dao.UserMapper"></mapper> </mappers>
-
-
测试方法
@Test public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); //底层其实就是通过反射,获取类方法名、返回值、注解 UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user.toString()); } }
-
在这个例子中,代码变得更加简单,但是如果出现实体类属性名和对应表的参数名不一致的时候就很难实现了。
-
-
CRUD示例
-
-
如果是基本数据类型或者String类型需要加上。
//注意,取值是取Param中的值 //方法存在多个参数,所有参数前面必须加上@Param注解 @Delete("delete from user where id = #{uid}") void deleteUser(@Param("uid") int id);
-
UserMapper
package com.rzp.dao; import com.rzp.pojo.User; import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; public interface UserMapper { @Select("select * from user") List<User> getUserList(); //按id 查 //方法存在多个参数,所有参数前面必须加上@Param注解 @Select("select * from user where id = #{id}") User getUserById(@Param("id") int id); //插入 @Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})") void addUser(User user); //更新 @Update("update user set pwd = #{pwd}, name = #{name} where id = #{id}") void update(User user); //注意,取值是取Param中的值 //删除 @Delete("delete from user where id = #{uid}") void deleteUser(@Param("uid") int id); }
-
测试类
//按id查询 @Test public void test01(){ SqlSession autoSession = MybatisUtils.getAutoSession(); UserMapper mapper = autoSession.getMapper(UserMapper.class); User user = mapper.getUserById(2); System.out.println(user); } //插入 @Test public void test02(){ SqlSession autoSession = MybatisUtils.getAutoSession(); UserMapper mapper = autoSession.getMapper(UserMapper.class); User user = new User(6,"cyy","223"); mapper.addUser(user); } //更新 @Test public void test03(){ SqlSession autoSession = MybatisUtils.getAutoSession(); UserMapper mapper = autoSession.getMapper(UserMapper.class); User user = new User(6,"c121","222223"); mapper.update(user); } //删除 @Test public void test04(){ SqlSession autoSession = MybatisUtils.getAutoSession(); UserMapper mapper = autoSession.getMapper(UserMapper.class); mapper.deleteUser(4); }