文章目录
一、 完成account的一对一(一个账户只能有一个用户)操作(通过写Account的子类方式查询)1.1 创建user,account两个实体类1.2 创建user,account操作数据库的两个类IUserDao,IAccountDao1.3 创建Account的子类AcountUser(把account和user结合起来)1.4 创建IUserDao,IAccountDao的映射配置文件IUserDao.xml,IAccountDao.xml1.5 测试1.6 测试结果
二、完成account的一对一操作(建立实体类关系的方式)2.1 修改account实体类2.2 修改IAccountDao.xml2.3 测试2.4 测试结果
一、 完成account的一对一(一个账户只能有一个用户)操作(通过写Account的子类方式查询)
1.1 创建user,account两个实体类
account:省略get和set方法
private int id
;
private int uid
;
private String a_num
;
user
private int id
;
private String username
;
private Date birthday
;
private String gender
;
1.2 创建user,account操作数据库的两个类IUserDao,IAccountDao
IUserDao
public interface IUserDao {
List
<User> findAll();
}
IAccountDao
public interface IAccountDao {
List
<Account> findAll();
List
<AccountUser> findAllAccountUser();
}
1.3 创建Account的子类AcountUser(把account和user结合起来)
package cn
.lhh
.domain
;
import java
.util
.Date
;
public class AccountUser extends Account {
private String username
;
private Date birthday
;
private String gender
;
public String
getUsername() {
return username
;
}
public void setUsername(String username
) {
this.username
= username
;
}
public Date
getBirthday() {
return birthday
;
}
public void setBirthday(Date birthday
) {
this.birthday
= birthday
;
}
public String
getGender() {
return gender
;
}
public void setGender(String gender
) {
this.gender
= gender
;
}
@Override
public String
toString() {
return "AccountUser{" +
"id='" + super.getId() + '\'' + " " +
"uid='" + super.getUid() + '\'' + " " +
"a_num='" + super.getA_num() + '\'' + " " +
"username='" + username
+ '\'' + " " +
" birthday=" + birthday
+ " " +
" gender='" + gender
+ '\'' +
'}';
}
}
1.4 创建IUserDao,IAccountDao的映射配置文件IUserDao.xml,IAccountDao.xml
IUserDao.xml
<!--查询所有用户信息
-->
<select id
="findAll" resultType
="user">
select
* from user
;
</select
>
IAccountDao.xml
<!--查询所有账户信息
-->
<select id
="findAll" resultType
="account">
select
* from account
;
</select
>
<!--查询所有账户信息及所属用户信息
-->
<select id
="findAllAccountUser" resultType
="accountUser">
select a
.*
,u
.username
,u
.birthday
,u
.gender from account a
,user u where a
.uid
= u
.id
</select
>
1.5 测试
@Test
public void testFindAllAccountUser() {
List
<AccountUser> aus
= dao
.findAllAccountUser();
for (AccountUser au
: aus
) {
System
.out
.println(au
);
}
}
1.6 测试结果
AccountUser
{id
='1' uid
='3' a_num
='475563' username
='王大大' birthday
=Thu Oct
22 08:00:00 CST
2020 gender
='男'}
AccountUser
{id
='2' uid
='3' a_num
='546545' username
='王大大' birthday
=Thu Oct
22 08:00:00 CST
2020 gender
='男'}
AccountUser
{id
='3' uid
='7' a_num
='498787' username
='李四' birthday
=Sun Oct
04 08:00:00 CST
2020 gender
='男'}
视屏观看:ssm P50
二、完成account的一对一操作(建立实体类关系的方式)
2.1 修改account实体类
private int id
;
private int uid
;
private String a_num
;
private User user
;
2.2 修改IAccountDao.xml
<!--定义封装account和user的resultMap
-->
<resultMap id
="accountUserMap" type
="account">
<id property
="id" column
="aid"></id
>
<result property
="uid" column
="uid"></result
>
<result property
="a_num" column
="a_num"></result
>
<!--一一对应的关系映射,配置封装user的内容
-->
<!--记得加javaType
,不让会出现空指针异常
,还有这里注意是javaType
,如果是collection标签,为ofType标签
-->
<association property
="user" column
="uid" javaType
="user">
<id property
="id" column
="id"></id
>
<result property
="username" column
="username"></result
>
<result property
="birthday" column
="birthday"></result
>
<result property
="gender" column
="gender"></result
>
</association
>
</resultMap
>
<!--查询所有账户信息
-->
<select id
="findAll" resultMap
="accountUserMap">
select u
.*
,a
.id as aid
,a
.uid
,a
.a_num from account a
,user u where a
.uid
= u
.id
</select
>
这里javaType是表示要把内容分装为那种类型
2.3 测试
@Test
public void testFindAll() {
List
<Account> accounts
= dao
.findAll();
for (Account account
: accounts
) {
System
.out
.println("---------------");
System
.out
.println(account
);
System
.out
.println(account
.getUser());
}
}
2.4 测试结果
account
{id
=1, uid
=3, a_num
='475563'}
User
{id
=3, username
='王大大', birthday
=Thu Oct
22 08:00:00 CST
2020, gender
='男'}
---------------
account
{id
=2, uid
=3, a_num
='546545'}
User
{id
=3, username
='王大大', birthday
=Thu Oct
22 08:00:00 CST
2020, gender
='男'}
---------------
account
{id
=3, uid
=7, a_num
='498787'}
User
{id
=7, username
='李四', birthday
=Sun Oct
04 08:00:00 CST
2020, gender
='男'}
视屏观看:ssm p51
具体代码看day03_mybaits_03oneToMany