今天主要跟大家介绍下Spring+mybatis的几种映射方式
这里介绍的是接口+xml映射文件的使用,其它请下去另查
映射的三种方法
1.关联关系全部用map映射文件写,这个是最慢的方式,不推荐
2.写对应结果查询的VO类,无需担心是多个还是一个,只要字段对应上就可以了
3.直接返回map类,这样都可以不定义实体类,非常方便
如下所示:
接口:public UserPri getPri(int userId); //第一种 写map映射文件的方式
// public List<Map> getPri(int userId); //第三种map方式
// public List<PrivliegeVO> getPri(int userId); //第二种VO类方式
mapper xml文件的配置
<select id="getPri" parameterType="int" resultType="map">
//这个是直接map的方法 ,第三种map方式
sql 语句的书写
select user.id,user.username,user.password,role.name as role_name,module.name as
module_name,module.url,acl.aclState ;
from t_user user,t_usersroles userrole,t_role role,t_acl acl,t_module module
where user.id=userrole.user and user.id=#{userId} and userrole.role=role.id and
acl.principalSn=role.id and acl.resourceSn=module.id;
第二种 VO类查询方式
先自定义一个实体,这里我名字起了为PrivilegeVO 属性名注意:你想要哪些表字段的值,都可以直接成为这个VO类的属性.
第一种map映射文件
这里有一个问题.如果使用第一种方法,如果两个或多个数据库表名的字段名一致,会导致其他的相同字段名的值会被最早查出来的覆盖掉,并且就是用别名方法结果也会是这样,这个解决方案暂时还没有解决,实在不行就改数据库表的字段名吧,或者在研究研究.