-
定義: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); }