Dynamic SQL คือการสร้างแบบไดนามิกของ SQL
ถ้าแท็ก
สมมติว่ามีข้อกำหนด: เมื่อสอบถามผู้ใช้เมื่อชื่อผู้ใช้ไม่เท่ากับ "ผู้ดูแลระบบ" เรายังต้องใช้รหัสผ่านของ 123456
ข้อมูลในฐานข้อมูลคือ:
mybatisconfig.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype configurationPublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" -> <ysealiases> <typealias type = "jike.book.pojo.jikeuser" alias = "jikeuser"/> <typealias type = "jike.book.pojo.author" alias = "ผู้เขียน"/> </typealiases> type = "pooled"> <property name = "driver" value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: // localhost: 3306/jikebook"/> <ชื่อทรัพย์สิน = "ชื่อผู้ใช้" value = "****"/> </TataSource> </environment> </environments> <mappers> <mapper resource = "jike/book/map/jikeuser.xml"/> </mappers>
jikeuser.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd resultType = "jikeuser" parameterType = "jikeuser"> เลือก * จาก jikebook.jikeuser ที่ 1 = 1 <ถ้าทดสอบ = "ชื่อผู้ใช้! = 'ผู้ดูแลระบบ'"> และรหัสผ่าน =#{รหัสผ่าน} </if> </select> </mapper>คลาสทดสอบ:
แพ็คเกจ jike.book.test; นำเข้า jike.book.pojo.jikeuser; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionformatory; org.apache.ibatis.session.sqlsessionfactorybuilder นำเข้า java.io.ioexception; นำเข้า java.io.reader; นำเข้า java.util.list;/*** Datetime: 2016/9/6 13: 36* ฟังก์ชั่น:* ความคิด:*/คลาสสาธารณะ Resource = "jike/book/map/mybatisconfig.xml"; reader reader = null; sqlsession session; ลอง {reader = resources.getResourceAreder (ทรัพยากร);} catch (ioexception e) {e.printstacktrace (); SQLSessionFactoryBuilder (). build (reader); session = sqlmapper.opensession (); jikeuser jikeuser = new jikeuser (); jikeuser.setPassword ("123456"); {system.out.println ("ชื่อผู้ใช้:"+user.getUserName ());} session.close ();}}ผลการทำงานคือ:
เลือกแท็ก
สมมติว่าเรามีข้อกำหนดในปัจจุบัน: สอบถามผู้ใช้หากชื่อผู้ใช้ไม่ว่างให้เพิ่มเงื่อนไขชื่อผู้ใช้หาก ID ไม่ว่างเปล่าให้เพิ่มเงื่อนไข ID มิฉะนั้นตั้งรหัสผ่านไม่ว่างเปล่าซึ่งเป็นตัวเลือกที่หลากหลาย
mybatisconfig.xml ไม่เปลี่ยนแปลงเพิ่ม:
<select id = "selectjikeuserchoose" resultType = "jikeuser" parameterType = "jikeuser"> select * จาก jikeuser ที่ 1 = 1 <celect> <w test = "ชื่อผู้ใช้! NULL </อย่างอื่น> </เลือก> </select>
คลาสทดสอบ: สมมติว่าชื่อผู้ใช้ไม่ว่างเปล่า:
แพ็คเกจ jike.book.test; นำเข้า jike.book.pojo.jikeuser; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionformatory; org.apache.ibatis.session.sqlsessionfactorybuilder นำเข้า java.io.ioexception; นำเข้า java.io.reader; นำเข้า java.util.list;/*** Datetime: 2016/9/6 13: 36* ฟังก์ชั่น:* ความคิด:*/คลาสสาธารณะ Resource = "jike/book/map/mybatisconfig.xml"; reader reader = null; sqlsession session; ลอง {reader = resources.getResourceAreder (ทรัพยากร);} catch (ioexception e) {e.printstacktrace (); SQLSessionFactoryBuilder (). build (reader); session = sqlmapper.opensession (); jikeuser jikeuser = new jikeuser (); jikeuser.setusername ("yen"); {system.out.println ("ชื่อผู้ใช้:"+user.getUserName ());} session.close ();}}ผลที่ได้คือ:
สมมติว่าเงื่อนไขชื่อผู้ใช้ไม่ได้ตั้งไว้นั่นคือแสดงความคิดเห็น jikeuser.setusername ("เยน");:
ที่มาร์กเกอร์ตั้งค่าเครื่องหมาย
แบบสอบถามข้างต้นในตัวเลือกคือเราไม่สามารถระบุได้ว่าและในเงื่อนไขการเชื่อมต่อย่อยจะถูกเขียนหรือไม่ดังนั้นเราจึงเพิ่ม 1 = 1 และที่ที่เราสามารถตัดสินได้ว่าควรเพิ่มหรือไม่
<select id = "selectJikeUserwhere" resultType = "jikeuser" parameterType = "jikeuser"> select * จาก jikeuser <โดยที่> <ถ้า test = "ชื่อผู้ใช้! = null"> และชื่อผู้ใช้เช่น #{username}การกำหนดแท็กชุดอัจฉริยะจะลบส่วนเกินออกโดยอัตโนมัติ ",", "
<update id = "UpdateJikeUserSet" parameterType = "jikeuser"> อัปเดต jikeuser <et> <ถ้า test = "ชื่อผู้ใช้! = null"> username =#{ชื่อผู้ใช้}, </ถ้า> <ถ้าทดสอบ = "รหัสผ่าน!ข้อมูลก่อนการทำงาน:
ดำเนินงาน:
ผลการดำเนินงาน:
<update id = "updateUserTrim" parameterType = "jikeuser"> อัปเดต jikeuser <trim prefix = "set" suffixoverrides = "," suffix = "id = #{id}"> <ถ้า test = "ผู้ใช้! = null และ username! = '' "> password =#{รหัสผ่าน}, </if> </trim> </update>แท็ก foreach
มักจะใช้สำหรับการสืบค้นลูปหรือการกำหนดลูป
<select id = "selectjikeuserforeach" resultType = "jikeuser" parameterType = "list"> เลือก * จาก jikeuser <โดยที่> id ใน <foreach item = "item" index = "index" collection = "list" open = "(" separator = "," close = ")ทดสอบ:
ด้านบนเป็นคำอธิบายโดยละเอียดของ MyBatis Dynamic SQL ถ้าเลือกที่ไหนตั้งค่าการตัดแต่งและแท็ก foreach ที่แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!