Orders类
public class Orders{
private int id;
private int userId;
private int number;
private Date createtime;
private String note;
//set... get...
自定义的OrdersCustom类,继承Orders
public class OrdersCustom extends Orders{
private String username;
private String address;
//set... get...
接口
public interface IOrdersDao {
//查询订单关联查询用户信息
public List<OrdersCustom> findOrdersUser() throws Exception;
}
mapper.xml
<select id="findOrdersUser" resultType="com.energyfuture.ssm.po.OrdersCustom" >
select
orders.*,user.*
from user,orders
where user.id = orders.user_id
</select>
测试
public class OrdersMapperTest {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void setUp() throws Exception {
String resource = "SqlMapConfig.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//创建回话工厂,传入mybatis的配置文件信息
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void findOrdersUserTest(){
SqlSession session = sqlSessionFactory.openSession();
try {
IOrdersDao mapper = session.getMapper(IOrdersDao.class);
List<OrdersCustom> list = mapper.findOrdersUser();
System.out.println(list);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(session != null){
session.close();
}
}
}
}
按理说OrdersCustom继承了Orders,查询出来的结果不是应该包含Orders里面的属性吗,但是为什么查询的list是:
[address=台湾市, username=周一]
并没有查询到Orders里面的属性?
private修饰的属性不会被子类继承
因为父类是private?
子类继承父类,子类拥有了父类的所有属性和方法。
程序验证,父类的私有属性和方法子类是无法直接访问的。当然私有属性可以通过public修饰的getter和setter方法访问到的,但是私有方法不行。
private修饰的属性不会被子类继承啊~~~
是可以的,你断点看一下查出来的数据是不是空?或者对应关系不对,自己写个resultmap试一下?
其实可能是你的属性和数据库中的字段对应不上造成,
如果不是的话,那就是setter和getter的问题了
楼主解决了 这个问题吗?
你父类的字段都没在resultMap里面做映射怎么会有结果
你要是想要查询Orders里面的属性,直接在OrdersCustom定义下父类的属性就行了,