Skip to content

Instantly share code, notes, and snippets.

@darkmastermindz
Created February 1, 2023 19:19
Show Gist options
  • Save darkmastermindz/d56a71415e5f40864ca8585cc10bd735 to your computer and use it in GitHub Desktop.
Save darkmastermindz/d56a71415e5f40864ca8585cc10bd735 to your computer and use it in GitHub Desktop.
ChatGPT MapStruct
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<main class="relative h-full w-full transition-width flex flex-col items-stretch flex-1"><div class="flex-1 overflow-hidden"><div class="h-full overflow-y-auto"><div class="flex flex-col items-center text-sm h-full dark:bg-gray-800"><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">Use MapStruct to map between 2 classes, initialize fields to 0 or empty when null depending on data type when converting. This is to be used from a JSON DTO with all String types to map to different java object models with nested java object models</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>To use MapStruct to map between two classes and initialize fields to 0 or empty when null depending on the data type when converting, you can do the following:</p><ol><li><p>Create two classes, for example, <code>Source</code> and <code>Target</code>, that will be mapped between. The <code>Source</code> class represents the JSON DTO with all String types, and the <code>Target</code> class represents the Java object model with nested Java object models.</p></li><li><p>Create a mapper interface, for example, <code>SourceTargetMapper</code>, and annotate it with <code>@Mapper</code>.</p></li><li><p>In the mapper interface, define a method, for example, <code>toTarget(Source source)</code>, that will map the fields from the <code>Source</code> class to the <code>Target</code> class. Annotate this method with <code>@Mapping(target = "fieldName", source = "fieldName")</code> for each field that should be mapped.</p></li><li><p>In the mapper interface, define a method, for example, <code>toTarget(Source source)</code>, that will map the fields from the <code>Source</code> class to the <code>Target</code> class. Annotate this method with <code>@Mapping(target = "fieldName", source = "fieldName", defaultValue = "0")</code> for each field that should be mapped and set to 0 when null.</p></li><li><p>In the mapper interface, define a method, for example, <code>toTarget(Source source)</code>, that will map the fields from the <code>Source</code> class to the <code>Target</code> class. Annotate this method with <code>@Mapping(target = "fieldName", source = "fieldName", defaultValue = "")</code> for each field that should be mapped and set to empty when null.</p></li><li><p>Generate the implementation of the mapper interface using the MapStruct annotation processor.</p></li><li><p>In your code, create an instance of the mapper interface and use it to map between the <code>Source</code> and <code>Target</code> classes.</p></li></ol><p>Note: MapStruct is a code generator that generates an implementation of your mapper interface at compile-time based on the annotations you've provided.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">give me the code examples, say that I have a JSON model dto of all string types mapped to a Student Object containing a ClassSchedule object and a StudentAllowance object</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here's an example of how you can use MapStruct to map between a JSON DTO with all String types and a <code>Student</code> object containing a <code>ClassSchedule</code> object and a <code>StudentAllowance</code> object:</p><ol><li>Create the <code>Student</code> class:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> StudentAllowance studentAllowance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="2"><li>Create the <code>ClassSchedule</code> class:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="3"><li>Create the <code>StudentAllowance</code> class:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="4"><li>Create the <code>Source</code> class, representing the JSON DTO with all String types:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="5"><li>Create the mapper interface, <code>SourceStudentMapper</code>:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><ol start="6"><li>In your code, create an instance of the mapper interface and use it to map between the <code>Source</code> and <code>Student</code> classes:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-type">Source</span> <span class="hljs-variable">source</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Source</span>();
<span class="hljs-comment">// set values for source</span>
<span class="hljs-type">SourceStudentMapper</span> <span class="hljs-variable">mapper</span> <span class="hljs-operator">=</span> Mappers.getMapper(SourceStudentMapper.class);
<span class="hljs-type">Student</span> <span class="hljs-variable">student</span> <span class="hljs-operator">=</span> mapper.toStudent(source);
</code></div></div></pre><p>Note that this is a simple example and the real implementation might have different use case and requirements.
Also, if you want to initialize fields to 0 or empty when null, you can do this by adding</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "0")</span>
``` or
```java
<span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "")</span>
</code></div></div></pre><p>for each field that should be mapped and set to 0 or empty when null respectively.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">add a balance field as BigDecimal and change allowance to BigDecimal type, for Source class keep everything as string. Update code for mapping</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Sure, here's an updated example of how you can use MapStruct to map between a JSON DTO with all String types and a <code>Student</code> object containing a <code>ClassSchedule</code> object and a <code>StudentAllowance</code> object, where the <code>StudentAllowance</code> class now has a <code>balance</code> field of type <code>BigDecimal</code> and the <code>allowance</code> field is of type <code>BigDecimal</code>:</p><ol><li>Update the <code>StudentAllowance</code> class:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-keyword">private</span> BigDecimal allowance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="2"><li>Update the <code>Source</code> class, representing the JSON DTO with all String types, to add balance field and change allowance to BigDecimal type:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><ol start="3"><li>Update the mapper interface, <code>SourceStudentMapper</code>:</li></ol><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.balance", source = "balance", numberFormat = "0.00")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance", numberFormat = "0.00")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p>You'll notice that I've added the <code>numberFormat</code> attribute on the mappings for the <code>balance</code> and <code>allowance</code> fields, so that MapStruct will parse the string values as BigDecimal using the given format.</p><p>Note that this is a simple example and the real implementation might have different use case and requirements. Also, if you want to initialize fields to 0 or empty when null, you can do this by adding</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "0")</span>
``` or
```java
<span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "")</span>
</code></div></div></pre><p>for each field that should be mapped and set to 0 or empty when null respectively.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">account for null and empty </div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>You can account for null and empty values when using MapStruct by using the <code>defaultValue</code> attribute on the mapping.</p><p>For example, if you want to initialize a field to 0 when it's null or empty in the source object, you can use the following mapping:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "0")</span>
</code></div></div></pre><p>This will set the target field to 0 if the source field is null or empty.</p><p>Similarly, if you want to initialize a field to an empty string when it's null or empty in the source object, you can use the following mapping:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "fieldName", source = "fieldName", defaultValue = "")</span>
</code></div></div></pre><p>This will set the target field to an empty string if the source field is null or empty.</p><p>You can also use the <code>nullValueMappingStrategy</code> attribute at the class level or method level to specify how to handle null values.</p><p>Here is an example of how you can handle null and empty value while mapping to <code>Student</code> object:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age", defaultValue = "0")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.balance", source = "balance", defaultValue = "0.00", numberFormat = "0.00")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance", defaultValue = "0.00", numberFormat = "0.00")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p>This way, if the value of any field in the Source class is null or empty it will be initialized to the default value specified in the mapping.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">explain @Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p><code>@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</code> is a class-level annotation used in MapStruct to specify how to handle null values when mapping between objects.</p><p><code>nullValueMappingStrategy</code> attribute takes one of the following values:</p><ul><li><code>RETURN_NULL</code>: This is the default value. If a source property is null, the target property will be set to null as well.</li><li><code>RETURN_DEFAULT</code>: If a source property is null, the target property will be set to the default value specified in the <code>defaultValue</code> attribute of the <code>@Mapping</code> annotation.</li><li><code>RETURN_SAME</code>: If a source property is null, the target property will be set to the same value as the source property.</li></ul><p>In this example, <code>@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</code> is used to tell the mapper that if a source property is null, the target property will be set to the default value specified in the <code>defaultValue</code> attribute of the <code>@Mapping</code> annotation.</p><p>So, if any field of the source class is null or empty, it will be initialized to the default value specified in the mapping, instead of setting it to null.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">change class time to date type and apply SimpleDateFormatter also add begin and end times to class then apply an example for the mappings as well</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>You can map a <code>String</code> field in the source class to a <code>Date</code> field in the target class using the <code>@Mapping</code> annotation and the <code>dateFormat</code> attribute. For example, if you want to map the <code>classTime</code> field in the source class to the <code>classTime</code> field in the target class and you want to format the date using the <code>yyyy-MM-dd</code> pattern, you can use the following mapping:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime", dateFormat = "yyyy-MM-dd")</span>
</code></div></div></pre><p>You can also add <code>beginTime</code> and <code>endTime</code> fields as <code>Date</code> type to the <code>ClassSchedule</code> class, And you can use the following mapping to map <code>beginTime</code> and <code>endTime</code> fields:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapping(target = "classSchedule.beginTime", source = "beginTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.endTime", source = "endTime", dateFormat = "HH:mm")</span>
</code></div></div></pre><p>Here is an example of how you can handle mapping for the updated classes:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age", defaultValue = "0")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.beginTime", source = "beginTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.endTime", source = "endTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.balance", source = "balance", defaultValue = "0.00", numberFormat = "0.00")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance", defaultValue = "0.00", numberFormat = "0.00")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p>In this example, the <code>classTime</code>,<code>beginTime</code> and <code>endTime</code> fields are mapped from <code>Source</code> class to <code>Student</code> class and the date format of these fields is applied accordingly.
Please note that, you have to make sure that the date formats you specified in the mappings match the date formats of the source fields.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">link me to this documentation on dateFormat attribute for MapStruct @Mapping</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>The <code>dateFormat</code> attribute of the <code>@Mapping</code> annotation is used in MapStruct to specify the date format of a field when mapping between classes. You can find more information about this attribute in the following documentation:</p><p>MapStruct - Mapping Configuration - <a href="https://mapstruct.org/documentation/stable/reference/html/#mapping-configuration" target="_new">https://mapstruct.org/documentation/stable/reference/html/#mapping-configuration</a></p><p>Here you can find the details of how to use <code>dateFormat</code> attribute of <code>@Mapping</code> annotation and how to use it to map date fields between classes.</p><p>You can also find more information about date and number format in the following documentation:</p><p>MapStruct - Formatting - <a href="https://mapstruct.org/documentation/stable/reference/html/#formatting" target="_new">https://mapstruct.org/documentation/stable/reference/html/#formatting</a></p><p>Here you can find more details on how to format numbers and dates when mapping between classes.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">put all this together in a demo java program and show a linux file system for this</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here is an example of a demo Java program that demonstrates how to use MapStruct to map between a JSON DTO with all String types to a Student object containing a ClassSchedule object and a StudentAllowance object:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">import</span> java.text.SimpleDateFormat;
<span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">import</span> org.mapstruct.Mapper;
<span class="hljs-keyword">import</span> org.mapstruct.Mapping;
<span class="hljs-keyword">import</span> org.mapstruct.NullValueMappingStrategy;
<span class="hljs-meta">@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age", defaultValue = "0")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.beginTime", source = "beginTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.endTime", source = "endTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.balance", source = "balance", defaultValue = "0.00", numberFormat = "0.00")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance", defaultValue = "0.00", numberFormat = "0.00")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> StudentAllowance studentAllowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> Date classTime;
<span class="hljs-keyword">private</span> Date beginTime;
<span class="hljs-keyword">private</span> Date endTime;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-keyword">private</span> BigDecimal allowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentMappingDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-type">Source</span> <span class="hljs-variable">source</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Source</span>();
source.setName(<span class="hljs-string">"John"</span>);
source.setAge(<span class="hljs-string">"25"</span>);
source.setStudentId(<span class="hljs-string">"S001"</span>);
source.setClassName(<span class="hljs-string">"Java Programming"</span>);
source.setClassTime(<span class="hljs-string">"2022-01-01"</span>);
source.setBeginTime(<span class="hljs-string">"10:00"</span>);
source.setEndTime(<span class="hljs-string">"12:00"</span>);
source.setBalance(<span class="hljs-string">"1000.00"</span>);
source.setAllowance(<span class="hljs-string">"500.00"</span>);
<span class="hljs-type">SourceStudentMapper</span> <span class="hljs-variable">mapper</span> <span class="hljs-operator">=</span> org
</code></div></div></pre></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">Add a Teacher class and put it inside ClassSchedule then rewrite the demo to show nested mappings</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here is an example of a demo Java program that demonstrates how to use MapStruct to map between a JSON DTO with all String types to a Student object containing a ClassSchedule object which contains a Teacher object and a StudentAllowance object:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">import</span> java.text.SimpleDateFormat;
<span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">import</span> org.mapstruct.Mapper;
<span class="hljs-keyword">import</span> org.mapstruct.Mapping;
<span class="hljs-keyword">import</span> org.mapstruct.NullValueMappingStrategy;
<span class="hljs-meta">@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(target = "name", source = "name", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "age", source = "age", defaultValue = "0")</span>
<span class="hljs-meta">@Mapping(target = "studentId", source = "studentId", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.className", source = "className", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.classTime", source = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.beginTime", source = "beginTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.endTime", source = "endTime", dateFormat = "HH:mm")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.teacher.name", source = "teacherName", defaultValue = "")</span>
<span class="hljs-meta">@Mapping(target = "classSchedule.teacher.age", source = "teacherAge", defaultValue = "0")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.balance", source = "balance", defaultValue = "0.00", numberFormat = "0.00")</span>
<span class="hljs-meta">@Mapping(target = "studentAllowance.allowance", source = "allowance", defaultValue = "0.00", numberFormat = "0.00")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> String teacherName;
<span class="hljs-keyword">private</span> String teacherAge;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> StudentAllowance studentAllowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> Date classTime;
<span class="hljs-keyword">private</span> Date beginTime;
<span class="hljs-keyword">private</span> Date endTime;
<span class="hljs-keyword">private</span> Teacher teacher;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Teacher</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-keyword">private</span> BigDecimal allowance;
<span class="hljs-comment">//getters and setters</span>
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentMappingDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-type">Source</span> <span class="hljs-variable">source</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Source</span>
</code></div></div></pre></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">consider using GSON to read the json and provide sample json data</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here is an example of how you could use GSON to read a JSON file and convert it to a <code>Source</code> object, and then use MapStruct to map the <code>Source</code> object to a <code>Student</code> object:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> com.google.gson.Gson;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentMappingDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-comment">// Read JSON file and convert to Source object</span>
<span class="hljs-type">Gson</span> <span class="hljs-variable">gson</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Gson</span>();
<span class="hljs-type">Source</span> <span class="hljs-variable">source</span> <span class="hljs-operator">=</span> gson.fromJson(<span class="hljs-keyword">new</span> <span class="hljs-title class_">FileReader</span>(<span class="hljs-string">"student.json"</span>), Source.class);
<span class="hljs-comment">// Use MapStruct to map Source to Student</span>
<span class="hljs-type">SourceStudentMapper</span> <span class="hljs-variable">mapper</span> <span class="hljs-operator">=</span> Mappers.getMapper(SourceStudentMapper.class);
<span class="hljs-type">Student</span> <span class="hljs-variable">student</span> <span class="hljs-operator">=</span> mapper.toStudent(source);
<span class="hljs-comment">// Print mapped Student object</span>
System.out.println(student);
}
}
</code></div></div></pre><p>Here is an example of the JSON data that the above code would read:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">json</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"John Doe"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"age"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"20"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"studentId"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"12345"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"className"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Math 101"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"classTime"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2022-01-01"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"beginTime"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"09:00"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"endTime"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"12:00"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"teacherName"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Jane Smith"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"teacherAge"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"35"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"balance"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1000.00"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"allowance"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"500.00"</span>
<span class="hljs-punctuation">}</span>
</code></div></div></pre><p>Note that the json file should be in the same directory of the java program
You could also use other libraries like Jackson or Jsonb to read json files and convert them to java objects</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">divide each class into a separate file and produce the new demo</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here is an example of how you could organize the classes and interfaces in separate files and use them in the <code>StudentMappingDemo</code> class:</p><p><code>Source.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> String teacherName;
<span class="hljs-keyword">private</span> String teacherAge;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-comment">// Getters and setters</span>
}
</code></div></div></pre><p><code>Teacher.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Teacher</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-comment">// Getters and setters</span>
}
</code></div></div></pre><p><code>ClassSchedule.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> Date classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> Teacher teacher;
<span class="hljs-comment">// Getters and setters</span>
}
</code></div></div></pre><p><code>StudentAllowance.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-keyword">private</span> BigDecimal allowance;
<span class="hljs-comment">// Getters and setters</span>
}
</code></div></div></pre><p><code>Student.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> StudentAllowance studentAllowance;
<span class="hljs-comment">// Getters and setters</span>
}
</code></div></div></pre><p><code>SourceStudentMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring", uses = { ClassScheduleMapper.class, StudentAllowanceMapper.class })</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(source = "classTime", target = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(source = "beginTime", target = "beginTime")</span>
<span class="hljs-meta">@Mapping(source = "endTime", target = "endTime")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>ClassScheduleMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring", uses = {TeacherMapper.class})</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">ClassScheduleMapper</span> {
<span class="hljs-meta">@Mapping(source = "classTime", target = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(source = "beginTime", target = "beginTime")</span>
<span class="hljs-meta">@Mapping(source = "endTime", target = "endTime")</span>
ClassSchedule <span class="hljs-title function_">toClassSchedule</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>TeacherMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring")</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">TeacherMapper</span> {
Teacher <span class="hljs-title function_">toTeacher</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>StudentAllowanceMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring")</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">StudentAllowanceMapper</span> {
StudentAllowance <span class="hljs-title function_">toStudentAllowance</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>StudentMappingDemo.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> com.google.gson.Gson;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentMappingDem</span>
</code></div></div></pre></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">use Lombok and refactor this</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here is an example of how you could use Lombok to reduce the amount of boilerplate code in the classes:</p><p><code>Source.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> lombok.Data;
<span class="hljs-meta">@Data</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Source</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> String teacherName;
<span class="hljs-keyword">private</span> String teacherAge;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-keyword">private</span> String allowance;
}
</code></div></div></pre><p><code>Teacher.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> lombok.Data;
<span class="hljs-meta">@Data</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Teacher</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
}
</code></div></div></pre><p><code>ClassSchedule.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">import</span> lombok.Data;
<span class="hljs-meta">@Data</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> Date classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> Teacher teacher;
}
</code></div></div></pre><p><code>StudentAllowance.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">import</span> lombok.Data;
<span class="hljs-meta">@Data</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentAllowance</span> {
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-keyword">private</span> BigDecimal allowance;
}
</code></div></div></pre><p><code>Student.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> lombok.Data;
<span class="hljs-meta">@Data</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-keyword">private</span> String studentId;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> StudentAllowance studentAllowance;
}
</code></div></div></pre><p><code>SourceStudentMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring", uses = { ClassScheduleMapper.class, StudentAllowanceMapper.class })</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">SourceStudentMapper</span> {
<span class="hljs-meta">@Mapping(source = "classTime", target = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(source = "beginTime", target = "beginTime")</span>
<span class="hljs-meta">@Mapping(source = "endTime", target = "endTime")</span>
Student <span class="hljs-title function_">toStudent</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>ClassScheduleMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring", uses = {TeacherMapper.class})</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">ClassScheduleMapper</span> {
<span class="hljs-meta">@Mapping(source = "classTime", target = "classTime", dateFormat = "yyyy-MM-dd")</span>
<span class="hljs-meta">@Mapping(source = "beginTime", target = "beginTime")</span>
<span class="hljs-meta">@Mapping(source = "endTime", target = "endTime")</span>
ClassSchedule <span class="hljs-title function_">toClassSchedule</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>TeacherMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring")</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">TeacherMapper</span> {
Teacher <span class="hljs-title function_">toTeacher</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>StudentAllowanceMapper.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-meta">@Mapper(componentModel = "spring")</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">StudentAllowanceMapper</span> {
StudentAllowance <span class="hljs-title function_">toStudentAllowance</span><span class="hljs-params">(Source source)</span>;
}
</code></div></div></pre><p><code>StudentMappingDemo.java</code></p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> com.google.gson.Gson
</code></div></div></pre></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">what is componentModel = "spring"</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p><code>componentModel</code> is an attribute that can be used in MapStruct's <code>@Mapper</code> annotation to specify the component model that the mapper should use.</p><p><code>"spring"</code> is one of the values that can be passed to this attribute, it is used to configure MapStruct to use Spring's specific component model. This is useful when you want to use MapStruct in a Spring application, it allows you to use Spring's <code>@Autowired</code> and <code>@Qualifier</code> annotations to inject dependencies into your mappers.</p><p>This is useful when you want to use MapStruct in a Spring application, it allows you to use Spring's <code>@Autowired</code> and <code>@Qualifier</code> annotations to inject dependencies into your mappers.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">show this injection happening</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Here's an example of how you can use the <code>componentModel = "spring"</code> attribute in MapStruct to inject a dependency into a mapper using the <code>@Autowired</code> annotation:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-comment">// SomeService.java</span>
<span class="hljs-keyword">import</span> org.springframework.stereotype.Service;
<span class="hljs-meta">@Service</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">SomeService</span> {
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">doSomething</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> <span class="hljs-string">"Hello from SomeService"</span>;
}
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-comment">// Dto.java</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Dto</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-comment">// Entity.java</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Entities</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String someServiceResult;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-comment">// DtoToEntitiesMapper.java</span>
<span class="hljs-keyword">import</span> org.mapstruct.Mapper;
<span class="hljs-keyword">import</span> org.mapstruct.Mapping;
<span class="hljs-keyword">import</span> org.mapstruct.factory.Mappers;
<span class="hljs-keyword">import</span> org.springframework.beans.factory.annotation.Autowired;
<span class="hljs-meta">@Mapper(componentModel = "spring")</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">DtoToEntitiesMapper</span> {
<span class="hljs-type">DtoToEntitiesMapper</span> <span class="hljs-variable">INSTANCE</span> <span class="hljs-operator">=</span> Mappers.getMapper(DtoToEntitiesMapper.class);
<span class="hljs-meta">@Autowired</span>
<span class="hljs-keyword">private</span> SomeService someService;
<span class="hljs-meta">@Mapping(target = "someServiceResult", expression = "java(someService.doSomething())")</span>
Entities <span class="hljs-title function_">dtoToEntities</span><span class="hljs-params">(Dto dto)</span>;
}
</code></div></div></pre><p>In this example, we have a <code>SomeService</code> class that is annotated with <code>@Service</code> and it's a Spring component. We also have a <code>DtoToEntitiesMapper</code> interface which is our mapper class, it's annotated with <code>@Mapper</code> and componentModel = "spring" attribute.</p><p>We have a method in the mapper class <code>dtoToEntities</code> that maps the properties of the <code>Dto</code> class to the properties of the <code>Entities</code> class. This method uses the <code>@Autowired</code> annotation to inject the <code>someService</code> dependency into the mapper.</p><p>When you use the <code>DtoToEntitiesMapper.INSTANCE.dtoToEntities(dto)</code>, the <code>someService</code> field will be injected with an instance of the <code>SomeService</code> class, and the <code>doSomething()</code> method will be called, and the result will be passed to the <code>someServiceResult</code> field of the <code>Entities</code> class.</p><p>This is a basic example of how you can use the <code>componentModel = "spring"</code> attribute in MapStruct to inject dependencies into your mappers.</p></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group dark:bg-gray-800"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img style="display: block; max-width: 100%; background-image: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"></span><img alt="Hansel Wei" srcset="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=32&amp;q=75 1x, /_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FAD5-WCnbXkEXmogL0INN8gqtrTNYUBtq4D5DlQiEYoO3S-UEPc4YhTv1yhCQnyEmILAymEexXX1FLSd1n_vRvuJnezCqgjMXH7EU6DYjtWB9r6Z5aNUrC5jVbGHMLMNnII3Mobg9Lzc13njr1JFv-yyuO34pG2Lln_lGkzL8kN_YnDQfmHYq9dwj0rxBmsEUpdhVIpv4d_Frmhr46tJwQQDjihQ8Ju7mCNFZenDUHq8vpXGqi2Cvor8J5ORz8Gzf5lTRL4esfMvnpSP1mlahCmZtm-8ziSLHLITJoYPgoqGB9eMqpSYQYZ_iCd8lvzVYSOCr7ujeQO4drSpNSy-9Tz94jkJ0M_giEFCMZ96jvPiQXGl62D6nEukupOCw9LI0GRi-GjDMm76var4AWt8fc4O5mlSgT1zfQ7n8fiqIryptvjIsOhnEvJVAC2uZN5ih3goAR_mu66d2lCnSjxZ-ER4rNdffFRx2qQsNLxpu_RvZVnskFl8LNdBVBbAbBTpT3uBOr-CrW6BAyUPEWm1Lqdx6YCcDxxm1-Cy0d8iTWSwOhJF_W-OLxEjqpdY2JBfrKujU5vD0sHRZGBTx2QfNv0vJFYY_aBy99ESZRapXRMaPXO8xc5cyJ307KOVV1r8yjf0ySi3YSW1KxWpHPy98bKzuyFgN8Zgjtd4CERkwYcQRTJMJDDbjl_v0MH5OMnuJLy1l2Qi9vTnBc42kdyvsv23xKYyxlTYAp3Uh5otReYmOUeQ4rlbDgIOLQHmM9Sl6GNxjDWwGXeKvE3udO9ksA__ofmGFCF0R68_nOVCIrsDpcWH0srH1cs1uXaSiQbysc3__msPfcqUxkqDeeCXmx6Os9ElKHXwG3-j6Lmz_X751ThmvXc5EwHbMJDBwMyzCnzsf4lYttcF78pYABrheJgn_qQ_WERu7s6e9vEEyqDk1Ti3Hp75j7YcgUVSX5XbC%3Ds96-c&amp;w=64&amp;q=75" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%;"></span></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">no this is not the direction I want - go back to the demo example and do it without Spring</div></div><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button></div><div class="flex justify-between"></div></div></div></div><div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]"><div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0"><div class="w-[30px] flex flex-col relative items-end"><div style="background-color: rgb(16, 163, 127); --noir-inline-background-color: #0d8266;" class="relative h-[30px] w-[30px] p-1 rounded-sm text-white flex items-center justify-center" data-noir-inline-background-color=""><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div></div><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Sure, I understand. Here's an example of how you can use MapStruct to map between two classes without using Spring:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">import</span> java.text.SimpleDateFormat;
<span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">import</span> org.mapstruct.Mapper;
<span class="hljs-keyword">import</span> org.mapstruct.Mapping;
<span class="hljs-keyword">import</span> org.mapstruct.Mappings;
<span class="hljs-keyword">import</span> org.mapstruct.factory.Mappers;
<span class="hljs-meta">@Mapper</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">JsonToStudentMapper</span> {
<span class="hljs-type">JsonToStudentMapper</span> <span class="hljs-variable">INSTANCE</span> <span class="hljs-operator">=</span> Mappers.getMapper(JsonToStudentMapper.class);
<span class="hljs-meta">@Mappings({
@Mapping(target = "classSchedule.className", source = "className"),
@Mapping(target = "classSchedule.classTime", source = "classTime", dateFormat = "yyyy-MM-dd'T'HH:mm:ss"),
@Mapping(target = "classSchedule.beginTime", source = "beginTime", dateFormat = "yyyy-MM-dd'T'HH:mm:ss"),
@Mapping(target = "classSchedule.endTime", source = "endTime", dateFormat = "yyyy-MM-dd'T'HH:mm:ss"),
@Mapping(target = "classSchedule.teacher.name", source = "teacherName"),
@Mapping(target = "classSchedule.teacher.age", source = "teacherAge"),
@Mapping(target = "studentAllowance", source = "allowance", defaultValue = "0"),
@Mapping(target = "balance", source = "balance", defaultValue = "0"),
})</span>
Student <span class="hljs-title function_">jsonToStudent</span><span class="hljs-params">(JsonStudent jsonStudent)</span>;
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java">
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">JsonStudent</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> String classTime;
<span class="hljs-keyword">private</span> String beginTime;
<span class="hljs-keyword">private</span> String endTime;
<span class="hljs-keyword">private</span> String teacherName;
<span class="hljs-keyword">private</span> String teacherAge;
<span class="hljs-keyword">private</span> String allowance;
<span class="hljs-keyword">private</span> String balance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">import</span> java.math.BigDecimal;
<span class="hljs-keyword">import</span> java.util.Date;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> ClassSchedule classSchedule;
<span class="hljs-keyword">private</span> BigDecimal studentAllowance;
<span class="hljs-keyword">private</span> BigDecimal balance;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ClassSchedule</span> {
<span class="hljs-keyword">private</span> String className;
<span class="hljs-keyword">private</span> Date classTime;
<span class="hljs-keyword">private</span> Date beginTime;
<span class="hljs-keyword">private</span> Date endTime;
<span class="hljs-keyword">private</span> Teacher teacher;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Teacher</span> {
<span class="hljs-keyword">private</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> age;
<span class="hljs-comment">// getters and setters</span>
}
</code></div></div></pre><p>You can use GSON library to convert the json data to JsonStudent Object:</p><pre><div class="bg-black mb-4 rounded-md"><div class="flex items-center relative text-gray-200 bg-gray-800 px-4 py-2 text-xs font-sans"><span class="">java</span><button class="flex ml-auto gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>Copy code</button></div><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-java"><span class="hljs-type">String</span> <span class="hljs-variable">jsonData</span> <span class="hljs-operator">=</span> <span class="hljs-string">"{\"name\":\"John\",\"className\":\"Math\",\"classTime\":\"2022-01-01T10:30:00\",\"beginTime\":\"2022-01-01T09:00:00\",\"endTime\":\"2022-01-01T12:00:00\",\"
</span></code></div></div></pre></div></div></div><div class="flex justify-between"><div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-3 md:gap-4 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible"><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg></button><button class="p-1 rounded-md hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path></svg></button></div></div></div></div></div><div class="w-full h-32 md:h-48 flex-shrink-0"></div></div></div></div><div class="absolute bottom-0 left-0 w-full border-t md:border-t-0 dark:border-white/20 md:border-transparent md:dark:border-transparent md:bg-vert-light-gradient bg-white dark:bg-gray-800 md:!bg-transparent dark:md:bg-vert-dark-gradient"><form class="stretch mx-2 flex flex-row gap-3 pt-2 last:mb-2 md:last:mb-6 lg:mx-auto lg:max-w-3xl lg:pt-6"><div class="relative flex h-full flex-1 md:flex-col"><div class="flex ml-1 mt-1.5 md:w-full md:m-auto md:mb-2 gap-0 md:gap-2 justify-center"></div><div class="flex flex-col w-full py-2 flex-grow md:py-3 md:pl-4 relative border border-black/10 bg-white dark:border-gray-900/50 dark:text-white dark:bg-gray-700 rounded-md shadow-[0_0_10px_rgba(0,0,0,0.10)] dark:shadow-[0_0_15px_rgba(0,0,0,0.10)]"><textarea tabindex="0" data-id="f6919b37-208e-48cd-8ac6-b5da46a86b22" style="max-height: 200px; height: 24.000002px; overflow-y: hidden;" rows="1" placeholder="" class="m-0 w-full resize-none border-0 bg-transparent p-0 pl-2 pr-7 focus:ring-0 focus-visible:ring-0 dark:bg-transparent md:pl-0"></textarea><button class="absolute p-1 rounded-md text-gray-500 bottom-1.5 right-1 md:bottom-2.5 md:right-2 hover:bg-gray-100 dark:hover:text-gray-400 dark:hover:bg-gray-900 disabled:hover:bg-transparent dark:disabled:hover:bg-transparent"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 mr-1" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg></button></div></div></form><div class="px-3 pt-2 pb-3 text-center text-xs text-black/50 dark:text-white/50 md:px-4 md:pt-3 md:pb-6"><a href="https://help.openai.com/en/articles/6825453-chatgpt-release-notes" target="_blank" rel="noreferrer" class="underline">ChatGPT Jan 30 Version</a>. Free Research Preview. Our goal is to make AI systems more natural and safe to interact with. Your feedback will help us improve.</div></div></main>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment