为什么ibatis没有配置数据库和JAVA实体对象的对应关系就能自动读取出来他每个属性?
我用的是2X的版本,不是现在的Mybatis的哪种,我想问问大家们哈,为什么他没有像hibernate一样配置过JAVA实体对象每个属性和数据库对应的每个列,他也能自己对...
我用的是2X的版本,不是现在的Mybatis的哪种,我想问问大家们哈,为什么他没有像hibernate一样配置过JAVA实体对象每个属性和数据库对应的每个列,他也能自己对应起来?我只不过就是写了简单的SQL查询语句而已,在JAVA里输出对应对象的属性,他就能准确的知道哪个哪个属性是数据库的哪一列??
还有一个哈,就是ibatis怎么配置数据库中有外键的存在的这种情况啊,我数据库里图书表和图书类型表,图书表的bookTypeId列外键图书类型表的bookTypeId,可是我查询到后读取那个JAVA对象的bookType对象里的bookTypeId属性就空指针了,不读那个其他基本属性都可以显示的,哎简单的说我就是不知道怎么处理数据库有主外键关系的时候的情况嘛,求大神们看下哈,最好两个问题都帮我下哈!!! 展开
还有一个哈,就是ibatis怎么配置数据库中有外键的存在的这种情况啊,我数据库里图书表和图书类型表,图书表的bookTypeId列外键图书类型表的bookTypeId,可是我查询到后读取那个JAVA对象的bookType对象里的bookTypeId属性就空指针了,不读那个其他基本属性都可以显示的,哎简单的说我就是不知道怎么处理数据库有主外键关系的时候的情况嘛,求大神们看下哈,最好两个问题都帮我下哈!!! 展开
1个回答
2014-05-21
展开全部
你写了resultClass,所以返回结果就是Book这个类,你应该有配一个alias。这样写要求你的book类的每一个字段和数据库的字段拼写都一样(首字母小写)。要是要对应的话,要写关联查询的配置,你可以看下api文档,配置较为繁琐。类似这样:
<resultMap type="HrMenu" id="menuResultMap">
<id property="id" column="ID" />
<result property="name" column="name" />
<result property="url" column="url" />
<result property="parentid" column="parentid" />
<result property="level" column="level" />
<result property="seq" column="seq" />
<result property="butnstyle" column="butnstyle" />
<association property="parent" column="parentid" select="HrMenu.findMenuById"></association>
<collection property="child" column="id" select="HrMenu.findMenusByParentId"></collection>
</resultMap>
<!-- 查询菜单list -->
<select id="findMenuById" parameterType="int" resultMap="menuNavResultMap">
SELECT * FROM hr_menu where id=#{id} order by seq;
</select>
<!-- 查询菜单list -->
<select id="findMenusByParentId" parameterType="int" resultMap="menuResultMap">
SELECT * FROM hr_menu where parentid=#{id} order by seq asc;
</select>
<resultMap type="HrMenu" id="menuResultMap">
<id property="id" column="ID" />
<result property="name" column="name" />
<result property="url" column="url" />
<result property="parentid" column="parentid" />
<result property="level" column="level" />
<result property="seq" column="seq" />
<result property="butnstyle" column="butnstyle" />
<association property="parent" column="parentid" select="HrMenu.findMenuById"></association>
<collection property="child" column="id" select="HrMenu.findMenusByParentId"></collection>
</resultMap>
<!-- 查询菜单list -->
<select id="findMenuById" parameterType="int" resultMap="menuNavResultMap">
SELECT * FROM hr_menu where id=#{id} order by seq;
</select>
<!-- 查询菜单list -->
<select id="findMenusByParentId" parameterType="int" resultMap="menuResultMap">
SELECT * FROM hr_menu where parentid=#{id} order by seq asc;
</select>
追问
哦哦,和hibernate的映射文件就又点像起来了,那如果我要把外键列也能正常读取出来,是不是只能自己写那些对应查询的配置?就是你发的那段代码。
默认配个alias是不行的吧?我就是配了个alias的节点选择的是book的类
追答
默认配置只能完成最简单的那种,要是复杂或者有关联的话就得比较麻烦了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询