SQLSessionTemplate
SQLSessionTemplate เป็นแกนหลักของ MyBatis-Spring ชั้นเรียนนี้มีหน้าที่รับผิดชอบในการจัดการ sqlsession ของ mybatis, เรียกวิธี Mybatis 'SQL และการแปลข้อยกเว้น SQLSessionTemplate เป็นเธรดที่ปลอดภัยและสามารถใช้ร่วมกันและใช้งานโดย DAO หลายตัว
เมื่อเรียกเมธอด SQL จะมีวิธีการส่งคืนจากวิธีการ MAPPER GETMAPPER () SQLSessionTemplate จะทำให้แน่ใจว่า SQLSession ที่ใช้เกี่ยวข้องกับธุรกรรมสปริงปัจจุบัน นอกจากนี้ยังจัดการวงจรชีวิตของเซสชั่นรวมถึงการปิดการดำเนินการหรือการย้อนกลับที่จำเป็น
SQLSessionTemplate ใช้ SQLSession ซึ่งหมายความว่าจำเป็นต้องเปลี่ยน SQLSession ของ myBatis
SQLSessionTemplate มักจะใช้เพื่อแทนที่การใช้ MyBatis เริ่มต้นของค่าเริ่มต้นของการเริ่มต้นเนื่องจากไม่สามารถมีส่วนร่วมในการทำธุรกรรมฤดูใบไม้ผลิหรือฉีดเพราะมันเป็นเธรดที่ไม่ปลอดภัย การแปลงระหว่างสองคลาสในแอปพลิเคชันเดียวกันอาจทำให้เกิดปัญหากับความสอดคล้องของข้อมูล
วัตถุ SQLSessionTemplate สามารถสร้างได้โดยใช้ SQLSessionFactory เป็นพารามิเตอร์ในการสร้างวิธีการ
<bean id = "sqlsession"> <constructor-arg index = "0" ref = "sqlsessionfactory"/> </ebean>
ตอนนี้ถั่วนี้สามารถฉีดเข้าไปในถั่ว Dao ได้โดยตรง คุณต้องเพิ่มคุณสมบัติ SQLSession ลงในถั่วเช่นรหัสต่อไปนี้:
ระดับสาธารณะ UserDaoimpl ใช้ UserDao {Private SQLSession SQLSession; โมฆะสาธารณะ setsqlsession (sqlsession sqlsession) {this.sqlsession = sqlsession; } ผู้ใช้สาธารณะ getUser (String userId) {return (ผู้ใช้) sqlsession.selectone ("org.mybatis.spring.sample.mapper.usermapper.getuser", userId); -ฉีด SQLSessionTemplate ดังนี้:
<bean id = "userdao"> <property name = "sqlsession" ref = "sqlsession"/> </ebean>
sqlsessiondaosupport
SQLSessionDaosupport เป็นคลาสสนับสนุนนามธรรมที่ใช้เพื่อให้คุณมี SQLSession การเรียกใช้วิธี getSqlSession () คุณจะได้รับ SQLSessionTemplate ซึ่งสามารถใช้ในการเรียกใช้วิธี SQL เช่นนี้:
ระดับสาธารณะ UserDaoImpl ขยาย SQLSessionDaosupport ดำเนินการ userdao {ผู้ใช้สาธารณะ getUser (String userId) {return (user) getSqlSession (). selectOne ("org.mybatis.spring.sample.mapper.usermapper.getuser" ผู้ใช้); - โดยปกติแล้ว MapperFactoryBean เป็นตัวเลือกแรกสำหรับคลาสนี้เพราะไม่จำเป็นต้องใช้รหัสเพิ่มเติม อย่างไรก็ตามหากคุณต้องการทำงานที่ไม่ใช่ mybatis อื่น ๆ ใน DAO หรือต้องการคลาสเฉพาะคลาสนี้มีประโยชน์ SQLSessionDaosupport ต้องการคุณสมบัติ SQLSessionFactory หรือ SQLSessionTemplate ในการตั้งค่า สิ่งเหล่านี้ถูกตั้งค่าอย่างชัดเจนหรือประกอบโดยอัตโนมัติภายในฤดูใบไม้ผลิ หากทั้งคู่ถูกตั้งค่า SQLSessionFactory จะถูกละเว้น
สมมติว่าคลาส USERMAPPERIMPL เป็นคลาสย่อยของ SQLSessionDaosupport สามารถกำหนดค่าได้ดังนี้ในฤดูใบไม้ผลิ:
<bean id = "usermapper"> <property name = "sqlsessionfactory" ref = "sqlsessionfactory"/> </ebean>