public class User implements Serializable {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
}
DoubleUser
public class DoubleUser implements Serializable {
private Integer userId;
private String userName;
private String userAddress;
private String userSex;
private Date userBirthday;
}
QueryVo
public class QueryVo {
private User user;
private List ids;
}
3.4 IUserDao.java
public interface IUserDao {
List findAll();
void saveUser(User user);
void updateUser(User user);
void deleteUser(Integer userId);
User findById(Integer userId);
List findByName(String username);
int findTotal();
List findUserByVo(QueryVo vo);
List findAllUser();
List findUserByCondition(User user);
List findUserByInIds(QueryVo vo);
}
3.5 IUserDao.xml
4.xml方式进行一对多查询
4.1 User,Account,AccountUser
User
public class User implements Serializable {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
}
Account
public class Account implements Serializable {
private Integer id;
private Integer uid;
private Double money;
private User user;
}
AccountUser
public class AccountUser extends Account {
private String username;
private String address;
}
4.2 IUserDao.java和IAccountDao.java
IUserDao.java
public interface IUserDao {
List findAll();
User findById(Integer userId);
}
IAccountDao.java
public interface IAccountDao {
List findAll();
List findAllAccount();
}
4.3 IUserDao.xml和IAccountDao.xml
IUserDao.xml
select u.*,a.id as aid,a.uid,a.money from user u left outer join account a on u.id = a.uid
select * from user where id =#{id};
IAccountDao.xml
select a.*,u.username,u.address from user u,account a where u.id=a.uid
select a.*,u.username,u.address from user u,account a where u.id=a.uid
5.xml方式进行多对多查询
5.1 Role和User
Role
public class Role implements Serializable {
private Integer roleId;
private String roleName;
private String roleDesc;
private List users;
}
User
public class User implements Serializable {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
}
5.2 IRoleDao.java和IUserDao.java
IRoleDao.java
public interface IRoleDao {
List findAll();
}
IUserDao.java
public interface IUserDao {
List findAll();
User findById(Integer userId);
}
5.3 IUserDao.xml和 IRoleDao.xml
IUserDao.xml
select * from user
select * from user where id =#{id};
IRoleDao.xml
select u.*,r.id as rid,r.role_name,r.role_desc from role r
left outer join user_role ur on r.id = ur.rid
left outer join user u on u.id = ur.uid
6. xml方式进行懒加载
6.1 SqlMapConfig.xml中开启懒加载
6.2 IAccountDao.xml和IUserDao.xml
IAccountDao.xml
select * from account
select * from account where uid = #{uid}
IUserDao.xml
select * from user
select * from user where id =#{id};
7.annotation方式进行CRUD操作
7.1 SqlMapConfig.xml
7.2 IUserDao.xml
public interface IUserDao {
@Select("select * from user")
List findAll();
@Insert("insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})")
void saveUser(User user);
@Update("update user set username=#{username},sex=#{sex},address=#{address},birthday=#{birthday} where id=#{id}")
void updateUser(User user);
@Delete("delete from user where id=#{id}")
void deleteUser(Integer userId);
@Select("select * from user where id=#{id}")
User findById(Integer userId);
@Select("select * from user where username like #{username}")
List findUserByName(String username);
@Select("select count(*) from user")
int findTotalUser();
}
8. annotation方式进行一对多和多对多查询
8.1 IUserDao.java
public interface IUserDao {
@Select("select * from user")
@Results(id = "userMap",value = {
@Result(id=true,column = "id",property = "userId"),
@Result(column = "username",property = "userName"),
@Result(column = "address",property = "userAddress"),
@Result(column = "sex",property = "userSex"),
@Result(column = "birthday",property = "userBirthday"),
@Result(property = "accounts",column = "id",
many = @Many(select = "cn.zh.dao.IAccountDao.findAccountByUid",fetchType = FetchType.LAZY))
})
List findAll();
@Select("select * from user where id=#{id}")
@ResultMap("userMap")
DoubleUser findById(Integer userId);
@Select("select * from user where username like #{username}")
@ResultMap("userMap")
List findUserByName(String username);
}
8.2 IAccountDao.java
public interface IAccountDao {
@Select("select * from account")
@Results(id = "accountMap",value = {
@Result(id = true,column = "id",property = "id"),
@Result(column = "uid",property = "uid"),
@Result(column = "money",property = "money"),
@Result(property = "doubleUser",column = "uid",
one = @One(select = "cn.zh.dao.IUserDao.findById",fetchType = FetchType.EAGER))
})
List findAll();
@Select("select * from account where uid = #{userId}")
List findAccountByUid(Integer userId);
}