您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
07-mybatis注解开发-多对多注解开发
发布时间:2025-02-04 14:21:01编辑:雪饮阅读()
-
建立Role的pojo类D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\domain\Role.java如:
package sp29.domain;
public class Role {
private int id;
private String roleName;
private String roleDesc;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleDesc() {
return roleDesc;
}
public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc;
}
@Override
public String toString() {
return "Role{" +
"id=" + id +
", roleName='" + roleName + '\'' +
", roleDesc='" + roleDesc + '\'' +
'}';
}
}
再为上篇中的User.java新增roles属性并生成getter,setter以及重新生成toString如D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\domain\User.java:
package sp29.domain;
import java.util.Date;
import java.util.List;
public class User {
private int id;
private String username;
private String password;
private Date birthday;
private List<Order> orders;
private List<Role> roles;
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", birthday=" + birthday +
", orders=" + orders +
", roles=" + roles +
'}';
}
}
然后UserMapper接口里面新增所有用户以及每个用户的角色的抽象接口方法如:D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\dao\UserMapper.java:
package sp29.dao;
import org.apache.ibatis.annotations.*;
import sp29.domain.User;
import java.util.List;
public interface UserMapper {
@Select("select * from user")
public List<User> findAll();
@Select("select * from user where id=#{id}")
public User findById(int id);
@Delete("delete from user where id=#{id}")
public void delete(int id);
@Update("update user set username=#{username},password=#{password} where id=#{id}")
public void update(User user);
@Insert("insert into user values(#{id},#{username},#{password},'','',#{birthday})")
public void save(User user);
@Select("select * from user")
@Results({
@Result(column="id",property = "id"),
@Result(column = "username",property = "username"),
@Result(column = "password",property = "password"),
@Result(
property = "orders",
column = "id",
javaType = List.class,
many = @Many(select = "sp29.dao.OrderMapper.findByUid")
)
})
public List<User> findUserAndOrdersAll();
@Select("select * from user")
@Results({
@Result(column="id",property = "id"),
@Result(column = "username",property = "username"),
@Result(column = "password",property = "password"),
@Result(
property = "roles",
column = "id",
javaType = List.class,
many = @Many(select = "sp29.dao.RoleMapper.findByUid")
)
})
public List<User> findUserAndRolesAll();
}
其中用到的sp29.dao.RoleMapper.findByUid则定义在如D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\dao\ RoleMapper.java中:
package sp29.dao;
import org.apache.ibatis.annotations.Select;
import sp29.domain.Role;
import java.util.List;
public interface RoleMapper {
@Select("select * from sys_user_role ur,sys_role r where ur.roleId=r.id and ur.userId=#{uid}")
public List<Role> findByUid(int uid);
}
然后编写测试类如D:\os\SpringWebApp\SpringProject2Module9\src\test\java\sp29\ MapperTest4.java:
package sp29;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import sp29.dao.UserMapper;
import sp29.domain.User;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MapperTest4 {
private UserMapper mapper;
@Before
public void before() throws IOException{
InputStream resourceAsStream= Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession=sqlSessionFactory.openSession(true);
mapper=sqlSession.getMapper(UserMapper.class);
}
@Test
public void testFindAll(){
List<User> userAndRolesAll=mapper.findUserAndRolesAll();
for (User user:userAndRolesAll) {
System.out.println(user);
}
}
}
关键字词:mybatis,注解,多对多