Mybatis基于注解進行開發
基于注解形式開發Mybatis省去XML的SQL映射配置文件(只需要在Mybatis的核心配置文件中設置要掃描的接口通過Mapper標簽中的子標簽<package>指定要掃描的包
)
注意:在進行想改的SQL操作的時候首先要注意數據表的字段的約束問題,例如字段username有一個唯一約束那么就不能設置多個
增加用戶:@Insert
/*** 添加用戶* @param user 一個user對相關信息*/
@Insert("insert into tb_user(user_name,password,name,age,sex)" +" values (#{userName},#{password},#{name},#{age},#{sex})")
public void addUser(User user);
查詢所有用戶:@Select
@Select("select id,tb_user.user_name,tb_user.password,tb_user.name,tb_user.age,tb_user.sex from tb_user")
public List<User> findAllUser();
更改一個用戶的信息@Update
@Update("update tb_user set user_name=#{updateName} where user_name=#{userName}")public int updateUser(@Param("userName") String name,@Param("updateName") String updateName);
主鍵回填技術:在項數據表中插入一行數據的時候,會返回所插入行的主鍵列數據
(主鍵列的數據會回填到實體類的屬性中-----》和主鍵相關聯的屬性
)
//主鍵回填
@Insert("insert into tb_user(user_name,password,name,age,sex)" +
"value (#{userName},#{password},#{name},#{age},#{sex})")
//使用Options標簽:useGeneratedKeys:開啟主鍵回填,keyProperty:指定主鍵回填的屬性名,keyColumn:指定主鍵的列名
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
public int addUserPk(User user);
最開始初始化定義對應的id為null,后面主鍵回填自動變成對應的列的id值
@Test
public void testAddUserPk(){SqlSession sqlSession = SqlSessionUtil.getSqlSession(true);UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = new User(null,"zhou","123456","暮辭",20,1);int i = userMapper.addUserPk(user);System.out.println(user);System.out.println(i);sqlSession.close();
}
當數據庫中的字段名同pojo的實體類的屬性名不同的時候,會導致數據無法封裝到實體類的屬性中去
通過@Results實現映射——》等價于<resultMap>
@Select("select id,user_name,tb_user.password,tb_user.name,tb_user.age,tb_user.sex from tb_user")
@Results(id = "userMap",value={//id=true表示的是這個字段為主鍵@Result(column = "user_id",property = "id",id = true),@Result(column = "user_name",property = "userName")}
)
public List<User> findAllUser();
基于注解的形式進行模糊查詢
like concat('%',張,'%')
–》查詢包含張這個字的
@Select("select id,user_name,password,name,age,sex " +"from tb_user " +"where sex=1 and name like concat('%',#{name},'%') ")
public List<User> findUserByLike(String name);