public interface AdminUserMapper {
@Insert("insert into admin_user(username, password) values(#{username}, #{password})")
@SelectKey(statement="SELECT last_insert_id() as id", keyProperty="id", before=false, resultType=int.class)
public int add(AdminUser adminUser);
@Delete("delete from admin_user where id=#{id}")
public void delete(@Param("id")int id);
@Update("update admin_user set username=#{username}, password=#{password} where id=#{id}")
public void update(AdminUser adminUser);
@Select("select * from admin_user")
public List<AdminUser> loadAll();
@Select("select * from admin_user limit #{start}, #{size}")
public List<AdminUser> loadAllLimit(@Param("start")int start, @Param("size")int size);
@Select("select * from admin_user where id=#{id}")
public AdminUser getById(@Param("id")int id);
@Select("select * from admin_user where username=#{username}")
public AdminUser getByUsername(@Param("username")String username);
}
这里要注意在Mapper中一定不要有相同名称的方法,要不然会出错。
@SelectKey(statement="SELECT last_insert_id() as id", keyProperty="id", before=false, resultType=int.class)
这句注解表示插入成功后,将主键设置到adminUser中, 当然AdminUser一定要有id的set方法, AdminUser的详情如下
public class AdminUser {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
第四步 在service中使用Mapper接口(相当于在service中使用Dao),你会发现以前需要进行Dao的接口设计以及Dao接口的实现,很麻烦,现在这些都不需要啦,只需要定义Mapper接口,然后定义相关的接口方法,在相关的方法上声明sql语句,然后在service中就可以使用该接口啦。
public interface AdminUserService {
public int addAdminUser(AdminUser adminUser);
public void deleteAdminUserById(int id);
public void updateAdminUser(AdminUser adminUser);
public AdminUser getByUsername(String username);
public List<AdminUser> loadAllAdminUsers();
public List<AdminUser> loadAllAdminUsers(int start, int size);
}
/**
* service for admin user
* @author kinfer
*
*/
@Service
public class AdminUserServiceImpl implements AdminUserService {
@Autowired
private AdminUserMapper adminUserMapper;
@Override
@Transactional
public int addAdminUser(AdminUser adminUser) {
return adminUserMapper.add(adminUser);
}
@Override
@Transactional
public void deleteAdminUserById(int id) {
adminUserMapper.delete(id);
}
@Override
@Transactional
public void updateAdminUser(AdminUser adminUser) {
adminUserMapper.update(adminUser);
}
@Override
@Transactional(readOnly=true)
public AdminUser getByUsername(String username) {
return adminUserMapper.getByUsername(username);
}
@Override
@Transactional(readOnly=true)
public List<AdminUser> loadAllAdminUsers() {
return adminUserMapper.loadAll();
}
@Override
@Transactional(readOnly=true)
public List<AdminUser> loadAllAdminUsers(int start, int size) {
return adminUserMapper.loadAllLimit(start, size);
}
}
第五步 测试,我使用的是springjunit