MyBatis集合查询

集合查询:

首先建立一个visit表,表的属性如下图所示,并且接着使用上一篇文章的user表

CREATE TABLE `visit` (
  `visitID` int(11) NOT NULL AUTO_INCREMENT,
  `userID` int(11) DEFAULT NULL,
  `visitDate` datetime DEFAULT NULL,
  `visitIP` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`visitID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


insert  into `visit`(`visitID`,`userID`,`visitDate`,`visitIP`) values (1,8,'2015-03-09 00:00:00','111.111.111.111'),(2,8,'2015-03-10 00:00:00','222.222.222.222'),(3,8,'2015-03-11 00:00:00','333.333.333.333');

根据属性新建visit.java  并写上set和get方法

在user.java里加上 private List<Visit> visitList; 并写上set和get方法

在User.xml写上

<resultMap id="visitMap" type="BSUser">
		<id property="id" column="id" />
		<result property="userName" column="userName" />
		<collection property="visitList" javaType="ArrayList"
			column="visitID" ofType="Visit">  
			<!--Visit是别名引用,全名在MyBatisConfig.xml里面的mapper字段内配置-->
			<result property="visitID" column="visitID" />
			<result property="visitIP" column="visitIP" />
			<result property="visitDate" column="visitDate" />
		</collection>
	</resultMap>
	<select id="selectVisit" resultMap="visitMap">
		select * from BSUser inner join visit on BSuser.id=visit.userID
	</select>

然后再测试类上的try里面写上(具体main函数总代码上篇文章有)

try{
			List<BSUser> ap=session.selectList("selectVisit"); 
			for(BSUser temp:ap) {
				System.out.println("用户名="+temp.getUserName());
				for(Visit oneVisit:temp.getVisitList())
				{
					System.out.println("登录时间="+oneVisit.getVisitDate()+
							"登录IP="+oneVisit.getVisitIP());
				}	
			}
			
		}

运行,他就能打印出用户名和该用户登陆的时间和IP了,当你查询的对象当中含有另外一个对象的集合的引用时,就可以使用集合查询了。

你可能感兴趣的:(mybatis,基础,集合查询)