主要搭建过程
1. pom.xml 文件中加入 mybatis 和数据库依赖 , 这里使用 mysql :
<properties> <mybatis.version> 3.2.3 </mybatis.version> <mysql.version> 5.1.26 </mysql.version> <slf4j.api.version> 1.7.5 </Slf4j.API.version> <Testng.version> 6.8.7 </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng.version> </testng. <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- Database driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version> $ {mysql.version} </Version> </abhängig> <!-mybatis 启动要加载 log4j-> <abhängig> <gruppe> org.slf4j </Groupid> <artifactid> Slf4j-log4j12 </artifactID> <version> $ {slf4j.api.api.api.api.api.api.api.api.api.api.api.api.api.api. <Depopentcy> <gruppe> org.Testng </Groupid> <artifactId> testng </artifactId> <version> $ {testng.version} </Version> </abhängig> </abhängig>
2. 在类路径下创建 mybatis 的配置文件 configuration.xml
<? alias = "user" type = "com.john.hbatis.model.user" /> < /typealias> <Environments Default = "Development"> <Umgebung ID = "Entwicklung"> <transactionManager type = "jdbc" /> <dataSource type = "palled"> <! name = "url" value = "jdbc: mysql: // localhost: 3306/hbatis"/> <Eigenschaft name = "userername" value = "root"/> <Eigenschaft name = "password" value = "123456"/> </dataSource> </umwelt> </umwelt> <mappers> <! Resource = "com/John/hbatis/model/user.xml"/> </mappers> </configuration>
3. 执行创建数据库和表的 sql :
- Erstellen Sie die Datenbank mit dem Namen "Hbatis". - Es ist in Ordnung, "nicht in Ordnung zu verwenden, um den Datenbanknamen zu verwenden, um zu verhindern, dass er wenn möglich als Schlüsselwort interpretiert wird. Erstellen Sie die Datenbank, wenn Sie nicht vorhanden sind" Hbatis "-Stabel-Zeichen. int (11) Standardnull, `adress` varchar (200) Standardnull, Primärschlüssel (` id`)) Engine = InnoDB Auto_increment = 2 Standard -Charset = Utf8;
4. Com.john.hbatis.model.user 类 :
Public Class User {private int id; privater Zeichenfolge Name; privates Stringalter; private String -Adresse; // Getters und Setter werden weggelassen // 如果有带参数的构造器 , 编译器不会自动生成无参构造器。当查询需要返回对象时 , orm 框架用反射来调用对象的无参构造函数 导致异常 : : Java.lang.nosuchMethodException: com.john.hbatis.model.user. this.address = Adresse; } public user (String -Name, int Alter, String -Adresse) {this.name = name; this.age = Alter; this.address = Adresse; }}com/John/Hbatis/Modell 路径下的 user.xml
<? namespace = "com.john.hbatis.model.usmapper"> <select id = "getUserById" ParameterType = "int" resultType = "user"> select * aus `user` wobei ID = #{ID} </select> </mapper>
5. 测试类 :
public class myBatisBasicTest {private statische endgültige Logger log = loggerfactory.getLogger (mybatisBacticest.Class); private statische SQLSessionFactory SQLSessionFactory; privater statischer Leser -Leser; @BeForeClass public static void initial () {try {reader = ressourcen.getResourceAsReader ("configuration.xml"); SQLSessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); } catch (ioException e) {log.Error ("Fehler beim Lesen der Konfiguration: {}", e); } endlich {if (reader! = null) {try {reader.close (); } catch (ioException e) {log.Error ("Fehler beim Schließen des Lesers: {}", e); }}}} @Test public void queryTest () {SQLSession Session = SQLSessionFactory.OpenSession (); User user = (user) session log.info ("{}: {}", user.getName (), user.getAddress ()); }}以接口方式交互数据
上面的环境搭建是采用 sqlSession 的通用方法并强制转换的方式 , : :
User user = (user) session
可以采用接口加 sql 语句的方式来解决 , sql 语句理解为是接口的实现 :
1. 新建接口类 :
Paket com.john.hbatis.mapper; import com.john.hbatis.model.user; public interface iusMapper {user getUserById (int id); } 2. 修改 user.xml 文件 , 确保 Namespace 属性值和接口的全限定名相同 , 且 id 属性值和接口方法名相同 :
<mapper namespace = "com.john.hbatis.mapper.iusermapper"> <select id = "getUserById"
3. 在 mybatisbasictest 类中添加测试方法 :
@Test public void queryInInterfacewayTest () {SQLSession Session = SQLSessionFactory.OpenSession (); IUSMAPPER MAPPER = Session.getMapper (iUSerMapper.Class); // 如果 Namespace 和接口全限定名不一致 , 报 org.apache.ibatis.binding.bindingException: Typ Interface com..iuserMapper ist der Mapperregistry 异常。 user user = mapper.getUserById (1) nicht bekannt; log.info ("{}: {}", user.getName (), user.getAddress ()); }附 :
上面的实现是把 sql 语句放在 xml 文件中 , 并通过一定的约束来保证接口能够在 xml 中找到对应的 sql 语句;
还有一种方式是通过接口+注解 sql 方式来交互数据 :
1. 新建接口类 :
Paket com.john.hbatis.mapper; import org.apache.ibatis.annotations.select; import com.john.hbatis.model.user; public interface iuserMapper2 {@select ({"" aus `user`" wob } 2. 在 Konfiguration.xml 文件中加入 :
<mappers> <mapper /> < /mappers>
或在初始化语句中加入 :
sqlSessionFactory.getConfiguration (). addMapper (iUSerMapper2.Class);
3. 相应修改上面的测试方法 :
IUSMPPER2 MAPPER = Session.getMapper (iUSerMapper2.Class);