主要搭建过程
1. pom.xml 文件中加入 mybatis 和数据库依赖, 这里使用 mysql:
<properties> <mybatis.version> 3.2.3 </mybatis.version> <mysql.version> 5.1.26 </mysql.version> <lf4j.api.version> 1.7.5 </slf4j.api.iversion> <การพึ่งพา> <roupId> org.mybatis </groupId> <ratifactid> mybatis </artifactid> <cersion> $ {mybatis.version} </senture> </derpendency> <!-ไดรเวอร์ฐานข้อมูล-> <predency> <cersion> $ {mysql.version} </version> </การพึ่งพา> <!-mybatis 启动要加载 log4j-> <การพึ่งพา> <roupId> org.slf4j </groupId> <ratifactid> slf4j-log4j12 </artifactid> <Ederency> <roupId> org.testng </groupId> <ratifactId> testng </artifactid> <version> $ {testng.version} </version>
2. 在类路径下创建 mybatis 的配置文件 configuration.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! การกำหนดค่า Doctype สาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" alias = "ผู้ใช้" type = "com.john.hbatis.model.user" /> < /typealiases> <environment default = "การพัฒนา"> <environment id = "การพัฒนา"> <transactionManager type = "jdbc" /> <dataSource type = "pooled"> <! name = "url" value = "jdbc: mysql: // localhost: 3306/hbatis"/> <ชื่อคุณสมบัติ = "ชื่อผู้ใช้" value = "root"/> <property name = "password" value = "123456"/> </dataSource> Resource = "com/john/hbatis/model/user.xml"/> </mappers> </การกำหนดค่า>
3. 执行创建数据库和表的 SQL:
- สร้างฐานข้อมูลชื่อ 'HBATIS' - ไม่เป็นไรที่จะใช้ `ไม่เป็นไรที่จะใช้ 'หรือ" ล้อมรอบชื่อฐานข้อมูลเพื่อป้องกันไม่ให้ถูกตีความว่าเป็นคำหลักถ้าเป็นไปได้ให้สร้างฐานข้อมูลหากไม่มี `hbatis' ชุดอักขระเริ่มต้น =` utf8`; null, `address` varchar (200) null เริ่มต้น, คีย์หลัก (` id`)) เครื่องยนต์ = InnoDB auto_increment = 2 charset เริ่มต้น = utf8;
4. com.john.hbatis.model.user 类:
ผู้ใช้ระดับสาธารณะ {ID INT ส่วนตัว; ชื่อสตริงส่วนตัว; อายุสตริงส่วนตัว ที่อยู่สตริงส่วนตัว // getters และ setters ถูกละเว้น // 如果有带参数的构造器,,, orm 框架用反射来调用对象的无参构造函数,: java.lang.nosuchmethodexception: com.john.hbatis.model.user. <int> () // 这时需要明确写出: ผู้ใช้สาธารณะ () {} ผู้ใช้สาธารณะ this.address = ที่อยู่; } ผู้ใช้สาธารณะ (ชื่อสตริง, อายุ int, ที่อยู่สตริง) {this.name = name; this.age = อายุ; this.address = ที่อยู่; -com/john/hbatis/model 路径下的 user.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "com.john.hbatis.model.usermapper"> <select id = "getUserById" parameterType = "int int" resultSpe = "ผู้ใช้"> เลือก * จาก `user` โดยที่ id = #{id}
5. 测试类:
คลาสสาธารณะ myBatisBasictest {ส่วนตัว logger สุดท้ายคงที่ log = loggerFactory.getLogger (myBatisBasictest.class); SQLSessionFactory SQLSessionFactory ส่วนตัว ผู้อ่านผู้อ่านแบบคงที่ส่วนตัว @beforeclass โมฆะคงที่สาธารณะเริ่มต้น () {ลอง {reader = resources.getResourceAsreader ("configuration.xml"); SQLSessionFactory = ใหม่ SQLSessionFactoryBuilder (). build (reader); } catch (ioexception e) {log.error ("ข้อผิดพลาดโยนขณะอ่านการกำหนดค่า: {}", e); } ในที่สุด {ถ้า (reader! = null) {ลอง {reader.close (); } catch (ioexception e) {log.error ("ข้อผิดพลาดโยนขณะปิดตัวอ่าน: {}", e); }}}} @Test โมฆะสาธารณะ QueryTest () {SQLSESSION SESSION = SQLSessionFactory.OpenSession (); ผู้ใช้ผู้ใช้ = (ผู้ใช้) เซสชัน SESSECTONE ("com.john.hbatis.model.usermapper.getUserById", 1); log.info ("{}: {}", user.getName (), user.getAddress ()); -以接口方式交互数据
上面的环境搭建是采用 sqlsession 的通用方法并强制转换的方式, 存在着转换安全的问题:
ผู้ใช้ผู้ใช้ = (ผู้ใช้) เซสชัน SESSECTONE ("com.john.hbatis.model.usermapper.getUserById", 1);可以采用接口加 SQL 语句的方式来解决, SQL 语句理解为是接口的实现:
1. 新建接口类:
แพ็คเกจ com.john.hbatis.mapper; นำเข้า com.john.hbatis.model.user; อินเทอร์เฟซสาธารณะ iusermapper {ผู้ใช้ getUserById (ID int); - 2. 修改 user.xml 文件, 确保เนมสเปซ属性值和接口的全限定名相同, 且 id 属性值和接口方法名相同:::
<mapper namespace = "com.john.hbatis.mapper.iusermapper"> <select id = "getUserById"
3. 在 mybatisbasictest 类中添加测试方法:
@Test โมฆะสาธารณะ QueryInInterFacewayTest () {SQLSESSION SESSION = SQLSessionFactory.OpenSession (); iusermapper mapper = session.getMapper (iusermapper.class); // 如果 namespace 和接口全限定名不一致, 报 org.apache.ibatis.binding.bindingexception: พิมพ์อินเตอร์เฟส com..iusermapper ไม่ทราบว่า mapperregistry 异常。ผู้ใช้ผู้ใช้ = mapper.getUserByid (1); log.info ("{}: {}", user.getName (), user.getAddress ()); -附:
上面的实现是把 SQL 语句放在 XML 文件中, 并通过一定的约束来保证接口能够在 XML 中找到对应的 SQL 语句;
还有一种方式是通过接口+注解 SQL 方式来交互数据:
1. 新建接口类:
แพ็คเกจ com.john.hbatis.mapper; นำเข้า org.apache.ibatis.annotations.select; นำเข้า com.john.hbatis.model.user; อินเทอร์เฟซสาธารณะ iusermapper2 {@select ({"เลือก * จาก` user` โดยที่ id = #{id} "}) ผู้ใช้ getUserById (int id); - 2. 在 configuration.xml 文件中加入:
<Mappers> <mapper /> </apers>
或在初始化语句中加入:
sqlsessionfactory.getConfiguration (). addMapper (iusermapper2.class);
3. 相应修改上面的测试方法:
iusermapper2 mapper = session.getMapper (iusermapper2.class);