表關係圖解
需要創建兩個實體表 與數據庫的兩張表相對應
然後把相關的配置文件配置好
在進行相關的操作
兩張實體表
account表
package com.more2one.domain;
import java.io.Serializable;
public class Accounts implements Serializable {
private int id;
private int uid;
private double money;
private Usersss usersss;
public Usersss getUsersss() {
return usersss;
}
public void setUsersss(Usersss usersss) {
this.usersss = usersss;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "Accounts{" +
"id=" + id +
", uid=" + uid +
", money=" + money +
", usersss=" + ((usersss!=null)?usersss.toString():null) +
'}';
}
}
user表
package com.more2one.domain;
import java.io.Serializable;
import java.util.List;
public class Usersss implements Serializable {
private int id;
private String pwd;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Usersss{" +
"id=" + id +
", pwd='" + pwd + '\'' +
", name='" + name + '\'' +
'}';
}
}
獲取數據庫連接的工具類
package com.more2one.utils;
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 java.io.IOException;
public class MySqlSessionUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
try {
sqlSessionFactory = builder.build(Resources.getResourceAsStream("sqlMapperConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
主配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"></properties>
<typeAliases>
<package name="com.more2one.dao"></package>
<package name="com.more2one.domain"></package>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"></property>
<property name="url" value="${db.url}"></property>
<property name="username" value="${db.username}"></property>
<property name="password" value="${db.password}"></property>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.more2one.dao"></package>
</mappers>
</configuration>
jdbc.properties
映射配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.more2one.dao.IUserDAO">
<resultMap id="accountMap" type="Accounts">
<id property="id" column="id"></id>
<result property="uid" column="uid"></result>
<result property="money" column="money"></result>
<association property="usersss" javaType="Usersss">
<id property="id" column="uuid"></id>
<!--這個地方在查詢的時候出現了bug,原因是數據庫名稱不正確-->
<result property="pwd" column="pwd"></result>
<result property="name" column="name"></result>
</association>
</resultMap>
<select id="findByMore2One" resultMap="accountMap">
select account.*,u.id uuid,u.pwd,u.name from account left join user u on account.uid = u.id
</select>
</mapper>
dao接口編寫
package com.more2one.dao;
import com.more2one.domain.Accounts;
import java.util.List;
public interface IUserDAO {
public List<Accounts> findByMore2One();
}
測試類
import com.more2one.dao.IUserDAO;
import com.more2one.domain.Accounts;
import com.more2one.utils.MySqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class More2OneTest {
@Test
public void test(){
SqlSession sqlSession = MySqlSessionUtil.getSqlSession();
IUserDAO mapper = sqlSession.getMapper(IUserDAO.class);
List<Accounts> byMore2One = mapper.findByMore2One();
for (Accounts accounts : byMore2One) {
System.out.println(accounts);
}
}
}
測試結果
代碼連接
百度網盤
鏈接:https://pan.baidu.com/s/1X0tkuq2aXpERIfWRI02hYA
提取碼:28u2
git鏈接
https://github.com/cxpcxpcxp/csdn_case_mybatis