代码部分
com.qingruan.bean目录下创建Account.java和User.java
1、Account.java
package com.qingruan.bean; public class Account { private Integer aid; private Integer uid; private double money; //在account类假如user类对象作为account类的一个属性 private User user; @Override public String toString() { return "Account{" + "aid=" + aid + ", uid=" + uid + ", money=" + money + ", user=" + user + '}'; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Integer getAid() { return aid; } public void setAid(Integer aid) { this.aid = aid; } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } } package com.qingruan.bean; public class Account { private Integer aid; private Integer uid; private double money; //在account类假如user类对象作为account类的一个属性 private User user; @Override public String toString() { return "Account{" + "aid=" + aid + ", uid=" + uid + ", money=" + money + ", user=" + user + '}'; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Integer getAid() { return aid; } public void setAid(Integer aid) { this.aid = aid; } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }
2、User.java
package com.qingruan.bean; public class User { private Integer id; private String username; private String sex; @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", sex='" + sex + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
3、IAccountDao.java
package com.qingruan.dao; import com.qingruan.bean.Account; import java.util.List; public interface IAccountDao { /** * 方法二:查询所有账户,同时获得所属用户的信息 * @return */ List<Account> findAllAccount(); }
4、AccountDao.xml
<?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">
<!--namespace 命名空间 包的全限定名 包名+类名 -->
<mapper namespace="com.qingruan.dao.IAccountDao">
<!--resultMap建立关系-->
<resultMap id="accountMap" type="Account">
<id column="aid" property="aid"></id>
<result column="uid" property="uid"></result>
<result column="money" property="money"></result>
<!--一对一配置-->
<association property="user" javaType="user">
<id column="id" property="id"></id>
<result column="username" property="username"></result>
<result column="sex" property="sex"></result>
</association>
</resultMap>
<!--resultMap建立关系-->
<select id="findAllAccount" resultMap="accountMap" >
SELECT a.*,u.`username`,u.`sex` FROM t_account a,t_user u WHERE a.`uid`=u.`id`
</select>
</mapper>
5、mybatis-config.xml
<?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> <!-- 指定日志引用的是log4j--> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!--给实体类配置别名--> <typeAliases> <!-- type实体类 alias别名 定义一个别名 <typeAlias type="com.qingruan.bean.Dept" alias="Dept"></typeAlias> --> <!--批量定义别名,扫描整个包下的所有的类,别名为类名,首字母大小写都可以--> <package name="com.qingruan.bean"/> </typeAliases> <!--可以设置多个运行环境,满足不同需要,例如 开发、测试、生产环境上有不同一配置 --> <environments default="mysql"> <environment id="mysql"> <!--事务管理类型主要有jdbc和managed,前者依赖于数据源获得的连接,后者依赖于容器 --> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <!-- 如果数据库设置为UTF-8,则URL参数连接需要添加?useUnicode=true&characterEncoding=UTF-8,如下 --> <property name="url" value="jdbc:mysql://localhost:3306/mydata1?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments> <!-- 告知mybaties映射配置的位置--> <mappers> <mapper resource="com/qingruan/dao/AccountDao.xml"></mapper> </mappers> </configuration>
6、MyBatisTest
package com.qingruan.test; import com.qingruan.bean.Account; import com.qingruan.dao.IAccountDao; 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 org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; import java.util.List; public class MyBatisTest { private InputStream is; private SqlSessionFactoryBuilder builder; private SqlSessionFactory sessionFactory; private SqlSession session; private IAccountDao dao; @Before //在测试方法执行之前执行 public void init() throws Exception{ is=Resources.getResourceAsStream("mybatis-config.xml"); //创建sqlSessionFacotory的构建着对象 builder=new SqlSessionFactoryBuilder(); //通过构建着对象创建工厂对象 sessionFactory = builder.build(is); //获得session对象 session = sessionFactory.openSession(); //使用session创建dao接口的代理对象 dao = session.getMapper(IAccountDao.class); } @After //在测试方法执行完成之后执行 public void destroy() throws Exception{ //提交事务 增删改后一定要控制事物的提交 session.commit(); //方式资源 session.close(); is.close(); } /** * 查账户的同时,显示用户信息,包括姓名和性别 */ @Test public void testFindAll(){ List<Account> list = dao.findAllAccount(); for (Account account : list) { System.out.println(account); } } }