日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 一对多映射_mybatis关系映射之一对多和多对一

發布時間:2024/7/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 一对多映射_mybatis关系映射之一对多和多对一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本實例使用用戶和訂單的例子做說明:?一個用戶可以有多個訂單, 一個訂單只對應一個用戶。(其中應用到注釋)

1.代碼的結構

2. 建表語句:

CREATE DATABASE test;

USE test;

CREATE TABLE person(

personId VARCHAR(36) PRIMARY KEY,

personName VARCHAR(64),

personAddress VARCHAR(128),

personTel VARCHAR(11)

);

CREATE TABLE orders(

orderId VARCHAR(36) PRIMARY KEY,

orderNumber VARCHAR(20),

orderPrice INT,

pid VARCHAR(36)

);

INSERT INTO person VALUES('1', '木子', '湖北', '110');

INSERT INTO person VALUES('2', '木子大大', '武漢', '120');

INSERT INTO person VALUES('1', '木子苗苗', '天門', '119');

INSERT INTO orders VALUES('1', '001', 100, '1');

INSERT INTO orders VALUES('2', '002', 200, '1');

INSERT INTO orders VALUES('3', '003', 300, '2');

INSERT INTO orders VALUES('4', '004', 400, '2');

INSERT INTO orders VALUES('5', '005', 500, '3');

SELECT p.*, o.* FROM person p JOIN orders o ON (p.personId=o.pid) WHERE p.personId = '1' ;

*指顯示所有字段

3. 用戶實體:

package com.mybatis.domain;

import java.util.List;

import lombok.Data;

@Data//注釋(Person為單方)

public class Person {

private String personid;

private String personname;

private String personaddress;

private String persontel;

//這個代表多方里面的內容(Orders)

private List orders;

@Override

public String toString() {

return "Person [personid=" + personid + ", personname=" + personname

+ ", personaddress=" + personaddress + ", persontel="

+ persontel + ", orders=" + orders + "]";

}

}

4. 訂單實體:

package com.mybatis.domain;

import lombok.Data;

@Data//(Orders為多方)

public class Orders {

private String orderid;

private String ordernumber;

private Integer orderprice;

//對象(單方Person)與外鍵進行關聯

private Person person;

}

5.寫PersonMapper.java的接口

package com.mybatis.dao.mapper;

import com.mybatis.domain.Orders;

import com.mybatis.domain.Person;

import java.util.List;

public interface PersonMapper {

int deleteByPrimaryKey(String personid);

int insert(Person record);

Person selectByPrimaryKey(String personid);

List selectAll();

int updateByPrimaryKey(Person record);

//一對多查詢(根據id查詢)

public List findPersonAndOrders(String pid);

//一對多查詢返回一個對象

public Person selectPersonById(String id);

}

6. 一對多實體配置: PersonMapper.xml

SELECT p.*,o.* FROM person o,orders b WHERE o.personid=#{pid};

select p.*, o.* from person p, orders o where p.personId = o.pid and p.personId = #{id}

7.寫OrdersMapper.java的接口

package com.mybatis.dao.mapper;

import com.mybatis.domain.Orders;

import java.util.List;

public interface OrdersMapper {

int deleteByPrimaryKey(String orderid);

int insert(Orders record);

Orders selectByPrimaryKey(String orderid);

List selectAll();

int updateByPrimaryKey(Orders record);

//多查一 根據id

public Orders selectOrderById(String oid);

//多查一 根據orderNumber

public Orders selectOrderNumber(String number);

}

8.多對一實體配置:OrdersMapper.xml

select p.*, o.* from person p, orders o where p.personId = o.pid and o.orderId = #{oid}

select p.*, o.* from person p, orders o where p.personId = o.pid and o.orderId = #{number}

9.其他配置

db.properties配置(sql語句的基本鏈接)

db.driver=com.mysql.jdbc.Driver

db.url=jdbc:mysql://localhost:3306/wang1?useUnicode=true&characterEncoding=utf8

db.username=root

db.password=123456

log4j.properties配置(注釋)

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis.xml(逆向生成domain、dao層)

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

generatorConfig.xml配置(對MySQL進行操作)下面標紅部分根據自己建立的進行修改

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

D盤中要有此包mysql-connector-java-5.1.7-bin.jar

connectionURL="jdbc:mysql://localhost:3306/wang1" userId="root" password="123456">

10.測試文件

package com.mybatis.test;

import java.io.InputStream;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Iterator;

import java.util.List;

import lombok.Data;

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.Before;

import org.junit.Test;

import com.mybatis.dao.mapper.OrdersMapper;

import com.mybatis.dao.mapper.PersonMapper;

import com.mybatis.domain.Orders;

import com.mybatis.domain.Person;

public class TestStudentMapper {

SqlSessionFactory sessionFactory = null;

// 這方法之前

@Before

public void setup() throws Exception {

String resource = "mybatis.xml";

// 這個是加載配置文件

InputStream inputStream = Resources.getResourceAsStream(resource);

// 得到會話工廠

sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

}

//查詢一對多 根據這個person里面的id號就能查詢出這個用戶有多少個訂單記錄

// @Test

public void testSelectPersonById(){

SqlSession sq = sessionFactory.openSession();

// 得到dao層的實現類

PersonMapper u = sq.getMapper(PersonMapper.class);

Person person = u.selectPersonById("2");

System.out.println(person);

}

//多對一 根據多對一id進行查詢

// @Test//多對一關聯查詢

public void testSelectOrderById(){

SqlSession sq = sessionFactory.openSession();

// 得到dao層的實現類

OrdersMapper u = sq.getMapper(OrdersMapper.class);

Orders od = u.selectOrderById( "2");

System.out.println(od.getPerson().getPersonname());

System.out.println(od.getPerson().getPersonaddress());

}

@Test//多對一關聯查詢

public void testSelectOrderNumber(){

SqlSession sq = sessionFactory.openSession();

// 得到dao層的實現類

OrdersMapper u = sq.getMapper(OrdersMapper.class);

Orders od = u.selectOrderNumber("001");

System.out.println(od.getPerson().getPersonname());

System.out.println(od.getPerson().getPersonaddress());

}

}

如有問題請多多指教!希望給您帶來幫助!祝您生活愉快。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

總結

以上是生活随笔為你收集整理的mysql 一对多映射_mybatis关系映射之一对多和多对一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。