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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

發布時間:2025/3/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mabitis中的一對一關系項目實戰:

1.首先根據創建以mybatis為基礎的web項目(1)中的流程將web項目部署好

  • 打開IDE,建立web工程
  • 在lib下面粘貼mybatis的jar,log4j的jar,mysql?連接的jar?最后最最重要的是要添加到構建路徑中去,這樣才能夠被項目所使用
  • 新建一個源文件夾config,用于存放xml文件
  • 在src目錄把下面新建四個包,分別是:
      • com.pojo:存放數據庫表對應的實體類
      • com.imp:存放接口類
      • com.test:存放測試類
      • com.util:存放工具類(最好寫成靜態方法,可以用類點方法的方式調用方法)
      • 目錄結構如下圖所示:
        •   

          ?

  • 在config下面新建一個com.imp包:存放接口類對應的xml文件(使用mapper代理接口方式: 使用接口和XML文件,在后臺自動生成操作數據庫的類)
  • 在config下面新建一個main_config.xml文件用于配置數據庫和一些相關的映射,環境,插件,別名,配置文件
  •   main_config.xml

    ?

  • 相應的再建立一個main_config.properties(這是一個鍵值對的文件,可用于存放jdbc的連接,便于修改)
  •   main_config.properties
  • 寫一個工具類(MybatisConnection.java ),用于獲取連接:
  •    1 package com.util; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 10 11 public class MyBatisConnection { 12 13 public static SqlSession getSqlSession() throws IOException{ 14 //獲取主配置文件 15 InputStream inputStream = Resources.getResourceAsStream("main_config.xml"); 16 //創建會話工廠 17 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 18 SqlSession sqlSession = sqlSessionFactory.openSession(); 19 return sqlSession; 20 21 22 } 23 24 } MyBatisConnection.java

    ?

  • 寫一個測試類(TestConnection):測試是否可以獲取連接
  •    1 package com.test; 2 3 import java.io.IOException; 4 5 import org.apache.ibatis.session.SqlSession; 6 7 import com.util.MyBatisConnection; 8 9 public class TestConnection { 10 11 public static void main(String[] args) throws IOException { 12 SqlSession sqlSession = MyBatisConnection.getSqlSession(); 13 System.out.println(sqlSession); 14 15 } 16 TestConnection.java  ??
  •       

    ?2.建立一個人的表(t_person),每個人對應一個身份證(一一對應關系)所以建立一個(t_card)表

    表結構如下圖所示

    3.建立對應的實體類(pojo)

    注意在person.java中cid對應寫的是card的對象

    1 package com.pojo; 2 3 public class Card { 4 private int id; 5 private int cardid; 6 public Card() { 7 super(); 8 // TODO 自動生成的構造函數存根 9 } 10 public int getId() { 11 return id; 12 } 13 public void setId(int id) { 14 this.id = id; 15 } 16 public int getCardid() { 17 return cardid; 18 } 19 public void setCardid(int cardid) { 20 this.cardid = cardid; 21 } 22 @Override 23 public String toString() { 24 return "Card [id=" + id + ", cardid=" + cardid + "]"; 25 } 26 27 } Card.java 1 package com.pojo; 2 3 public class Person { 4 5 private int id; 6 private String name; 7 private Card card; 8 public Person() { 9 super(); 10 // TODO 自動生成的構造函數存根 11 } 12 public int getId() { 13 return id; 14 } 15 public void setId(int id) { 16 this.id = id; 17 } 18 public String getName() { 19 return name; 20 } 21 public void setName(String name) { 22 this.name = name; 23 } 24 public Card getCard() { 25 return card; 26 } 27 public void setCard(Card card) { 28 this.card = card; 29 } 30 @Override 31 public String toString() { 32 return "Person [id=" + id + ", name=" + name + ", card=" + card + "]"; 33 } 34 35 } Person.java

    ?

    4.寫接口或者對應的xml文件(要注意三個規范:1.接口名和映射文件名相同,2.在同一目錄下,3.使用mapper代理接口(接口和XML文件,在后臺自動生成操作數據庫的類))?

    建議先寫接口,有了接口之后再考慮怎么實現

    我先寫了一個接口(IPerson.java)

    1 package com.imp; 2 3 import java.util.List; 4 5 import com.pojo.Person; 6 7 public interface IPerson { 8 //查詢所有 9 List<Person> sqlall(); 10 11 } IPerson.java

    ?

    ?再寫對應的xml文件

    1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <!-- namespace:命名空間, 用于隔離sql語句 --> 4 <mapper namespace="com.imp.IPerson"> 5 <!-- id是sql語句的唯一標識符,名字要與 接口中的方法名相同 --> 6 <select id="sqlall" resultMap="test"> 7 SELECT 8 t_person.id, 9 t_person.`name`, 10 t_person.cid, 11 t_card.id, 12 t_card.cardid 13 FROM 14 t_card 15 INNER JOIN t_person ON t_person.cid = t_card.id 16 </select> 17 <resultMap type="person" id="test"> 18 <id column="id" property="id" /> 19 <result column="name" property="name" /> 20 <!-- association 是一對一映射關系使用的標簽 --> 21 <association property=""></association> 22 <association property="card" javaType="card"> 23 <id column="cid" property="id" /> 24 <result column="cardid" property="cardid" /> 25 </association> 26 </resultMap> 27 28 </mapper> IPerson.xml

    ?

    在IPerson.xml中namepace的值為對應的接口的全限定名(com.imp.IPerson)?

    在IPerson.xml的查詢中我們沒有使用resultType而是使用了resultMap

    這是因為數據庫表中的字段和實體類的屬性不一致,這時候我們使用resultMap

    id表示主鍵,?

    result?表示普通的字段

    association:一對一關系

    column表示:查詢結果對應的字段

    property:實體類對應的屬性

    ?

    查詢語句可以直接通過工具直接生成(直接拖動到空白處即可生成查詢語句)

    ?

    ?

    5.接下來就應該是在主配置文件中寫映射文件的路徑了

    大家發現沒有,我在IPerson.xml文件中寫的Type,javaType都是實體類名,沒有加包名,(這里我們要注意,我在主配置

    文件中寫了別名,是通過包來加載的,所以只要寫類名即可,首字母的大小寫不作區分)

    在主配置文件的mappers標簽中我使用的也是package映射,這是為了使用更加方便,如果有很多的xml文件要映射,那不是要寫很多,這里只寫一句就夠了。

    1 <!-- 取別名 --> 2 <typeAliases> 3 <package name="com.pojo"/> 4 </typeAliases> 5 <!-- 添加映射文件 --> 6 <mappers> 7 <package name="com.imp"/> 8 </mappers> main_config.xml

    ?

    注意標簽的順序,這個有嚴格的規定

    Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
    objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

    6.接下來我們就要寫一個測試文件,看看我們是否寫成功了

    1 package com.test; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 import org.apache.ibatis.session.SqlSession; 7 8 import com.imp.IPerson; 9 import com.pojo.Person; 10 import com.util.MyBatisConnection; 11 12 public class TestSqlAll { 13 14 public static void main(String[] args) throws IOException { 15 SqlSession sqlSession = MyBatisConnection.getSqlSession(); 16 IPerson person = sqlSession.getMapper(IPerson.class); 17 List<Person> list = person.sqlall(); 18 for (Person person2 : list) { 19 System.out.println(person2); 20 } 21 } 22 } TestSqlAll.java

    ?

    可能測試的時候會發生錯誤,我們要仔細看看報的什么錯誤,找到錯誤所在,改正即可

    7.測試結果如下(如果為空,那是因為你的數據庫是空的啊)

    ?


    ?

    轉載于:https://www.cnblogs.com/xyblogs/p/8780870.html

    總結

    以上是生活随笔為你收集整理的创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战的全部內容,希望文章能夠幫你解決所遇到的問題。

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