查看這張時必須有上一張的基礎
這里使用了包裝類,將多個表查詢數來的復雜結果存儲在包裝類中返回回來
CREATE DATABASE my_db;CREATE TABLE user( id INT(11) PRIMARY KEY AUTO_INCREMENT, parentId INT(11), sonId INT(11), name VARCHAR(255), birthday DATE )DEFAULT CHARSET=utf8;CREATE TABLE `orders` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `userId` INTEGER NOT NULL, `create` DATETIME DEFAULT NULL, `detailId` INTEGER DEFAULT NULL, PRIMARY KEY (`id`) )DEFAULT CHARSET=utf8;目錄結構。
這里我新創建了:
Orders.java : Orders對象。OrdersCustem.java: Order包裝對象。 (重點)OrderDao.java : 數據接口 OrderDao.xml: mapper映射文件。(重點)OrdersCustem對象和OrderDao 必須一一對應。
代碼如下: OrdersCustem.java:
package com.zll.mybatis.bean;import java.util.Date;public class OrderCustem extends Orders{ private String username; private Date userBirthday; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getUserBirthday() { return userBirthday; } public void setUserBirthday(Date userBirthday) { this.userBirthday = userBirthday; } @Override public String toString() { return "OrderCustem [username=" + username + ", userBirthday=" + userBirthday + ", getId()=" + getId() + ", getDetailId()=" + getDetailId() + ", getCreate()=" + getCreate() + ", getUserId()=" + getUserId() + "]"; }}OrderDao.java :
package com.zll.mybatis.dao;import com.zll.mybatis.bean.OrderCustem;public interface OrderDao { public List<OrderCustem> findOrderById() throws Exception;}OrderDao.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"><mapper namespace="com.zll.mybatis.dao.OrderDao"> <!-- 模糊查詢 ${}符號表示sql使用拼接方式,這樣會參數sql注入露點,所以大家要注意 --> <select id="findOrderById" resultType="com.zll.mybatis.bean.OrderCustem"> select orders.*,user.name username,user.birthday userBirthday from orders,user where orders.userId = user.id; </select></mapper>測試代碼:
/** * Unit test for simple App. */public class TestResultTypeMap extends TestCase { SqlsessionFactory sqlSessionFactory; @Override protected void setUp() throws Exception { super.setUp(); String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } public void findOrderById() throws Exception { SqlSession openSession = sqlSessionFactory.openSession(); OrderDao mapper = openSession.getMapper(OrderDao.class); List<OrderCustem> findOrderById = mapper.findOrderById(); for(int i=0; i<findOrderById.size(); i++){ System.out.println(findOrderById.get(i)); } openSession.close(); }}新聞熱點
疑難解答