Mybactis多对一
mybactis的多对一的思想与一对多的思想并没有太大的差别,只不过是将期反过来,具体代码变化也不大,只是将实体映射类中的collection属性改为association属性,并将对应的值改变
需要的jar包:1、mybatis-3.2.3.jar
2、 mysql-connector-java-5.1.25-bin.jar
具体代码如下:
Users实体类:
package com.huweiyang.bean;
import java.io.Serializable;
import java.util.List;
publicclassUsers implements Serializable{
privateintid;
private String username;
private String main;
publicint getId() {
returnid;
}
publicvoid setId(intid) {
this.id = id;
}
public String getUsername() {
returnusername;
}
publicvoid setUsername(String username) {
this.username = username;
}
public String getMain() {
returnmain;
}
publicvoid setMain(String main) {
this.main = main;
}
}
Post实体类:
package com.huweiyang.bean;
import java.io.Serializable;
publicclassPost implements Serializable{
privateintpost_id;
private Users user;
publicint getPost_id() {
returnpost_id;
}
publicvoid setPost_id(intpost_id) {
this.post_id = post_id;
}
public Users getUser() {
returnuser;
}
publicvoid setUser(Users user) {
this.user = user;
}
public String getPsrt() {
returnpsrt;
}
publicvoid setPsrt(String psrt) {
this.psrt = psrt;
}
public String getMoter() {
returnmoter;
}
publicvoid setMoter(String moter) {
this.moter = moter;
}
private String psrt;
private String moter;
}
实体类的映射:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN" "mybatis-3-mapper.dtd">
<mapper namespace="com.huweiyang.bean.Post">
<resultMap id="resultuserMap" type="Post">
<result property="post_id" column="post_id"/>
<result property="psrt" column="psrt"/>
<result property="moter" column="moter"/>
<association property="user" javaType="Users">
<result property="id" column="usersid"/>
<result property="username" column="username"/>
<result property="main" column="main"/>
</association>
</resultMap>
<select id="getUser" resultMap="resultuserMap"parameterType="int">
SELECTu.*,p.*
FROMusers u, post p
WHEREu.id=p.usersid AND p.post_id=#{id}
</select>
</mapper>
Mybactis配置:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDconfig 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Users" type="com.huweiyang.bean.Users"/>
<typeAlias type="com.huweiyang.bean.Post" alias="Post"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybaits"/>
<property name="username" value="root"/>
<property name="password" value="lookme"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/huweiyang/bean/post.xml"/>
</mappers>
</configuration>
测试类:
package com.huweiyang.mapping;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.huweiyang.bean.Post;
import com.huweiyang.bean.Users;
publicclassMapping {
publicstaticvoid main(String[] args) throws IOException {
// 获取sqlsession对象
Readersr = Resources.getResourceAsReader("config.xml");
SqlSessionFactorysqlsessionf= newSqlSessionFactoryBuilder().build(sr);
SqlSessionsqlsesion = sqlsessionf.openSession();
// 指定路径
Postpost= sqlsesion.selectOne("com.huweiyang.bean.Post.getUser",1);
// 输出post表中对应的id
System.out.println(post.getPsrt());
// 获取users实体类的对象
Usersuser=post.getUser();
// 输出users表中对应的username
System.out.println(user.getUsername());
}
}