主要搭建过程
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> <stestng.version> varyerence> <pregity> <pretence> <pretenge> <pretenge> <pretenge> <pretenge> <pretenge> <pretenge> <pretenge> <pretenge> <pretenge> agementies> <pretenge> <pretengy> very. <groupId> org.mybatis </GroupId> <ArtifactId> mybatis </artifactid> <serse> $ {mybatis.version} </version> </dependency> <!-Драйвер базы данных-> <Dependency> <groupId> mySQL </GroupId> <strifactId> mySql-connector-javaVa </artifactid> <strifactid> mysql-connector j <version>${mysql.version}</version> </dependency> <!-- mybatis启动要加载log4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.api.version}</version> </dependency> <!-- Test --> <dependency> <groupId> org.testng </GroupId> <ArtifactId> testng </artifactId> <sersion> $ {testng.version} </version> </deperency> </depertion>
2. 在类路径下创建 Mybatis 的配置文件 configuration.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <ponifulation> <pecietials> <!--别名! type = "com.john.hbatis.model.user" /> < /typealiases> <среда default = "Развитие"> <среда идентификатор = "разработка"> <transactionmanager type = "jdbc" /> <dataSource Type = "Booled"> <!-数据源-> <proportment = "grive" value = "mysql.jdb. value = "jdbc: mysql: // localhost: 3306/hbatis"/> <name = "username" value = "root"/> <name = "password" value = "123456"/> </dataSource> </ervenery> </ervinements> <mappers> <!-orm 映射文件-> <mapper resource = "compatis> hbatis> hbatis> hbatis> hbatis> <! /> </mappers> </configuration>
3. 执行创建数据库和表的 SQL :
- Создайте базу данных с именем 'hbatis'. - Можно использовать «, не в порядке использовать» или «окружение имени базы данных, чтобы не было интерпретировать его как ключевое слово, если это возможно. Создайте базу данных, если не существует` hbatis` set alems = `utf8`;- Создать таблицу с именем« пользователь ». int (11) null по умолчанию, `address` varchar (200) null по умолчанию, первичный ключ (` id`)) Engine = innodb auto_increment = 2 default charset = utf8;
4. com.john.hbatis.model.user 类 :
Пользователь открытого класса {private Int Id; Приватное название строки; частный возраст строк; частный строковый адрес; // Getters и Setters опущены // 如果有带参数的构造器 , 编译器不会自动生成无参构造器。当查询需要返回对象时 , orm 框架用反射来调用对象的无参构造函数 , 导致异常 : java.lang.nosuchmethodexception: com.john.hbatis.model.user. <int> () // 这时需要明确写出 : : public user () {} public user (int, строковый адрес) {id = id; this.address = адрес; } public user (string name, int age, string address) {this.name = name; this.age = возраст; this.address = адрес; }}com/john/hbatis/model 路径下的 user.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper.org/dtd/mybatis-3-mapper.dtd " namespace = "com.john.hbatis.model.usermapper"> <select id = "getUserbyId" parameterType = "int" outdetype = "user"> select * from `user` where = #{id} </select> </mapper>
5. 测试类 :
открытый класс mybatisbasictest {private Static Final Logger log = loggerfactory.getLogger (mybatisbasictest.class); Частный статический SQLSessionFactory SQLSessionFactory; частный статический читатель читателя; @Beforeclass public static void initial () {try {rearder = resources.getresourceasreader ("configuration.xml"); sqlSessionFactory = new sqlSessionFactoryBuilder (). Build (Reader); } catch (ioException e) {log.error ("ошибка, которую бросает при чтении конфигурации: {}", e); } наконец {if (reader! = null) {try {reader.close (); } catch (ioException e) {log.Error ("ошибка, брошенная при закрытии читателя: {}", e); }}}} @Test public void QueryTest () {sqlSession Session = sqlSessionFactory.opensession (); Пользователь пользователь = (пользователь) session.selectone ("com.john.hbatis.model.usermapper.getuserbyid", 1); log.info ("{}: {}", user.getName (), user.getAddress ()); }}以接口方式交互数据
上面的环境搭建是采用 SQLSession 的通用方法并强制转换的方式 存在着转换安全的问题 :
Пользователь пользователь = (пользователь) session.selectone ("com.john.hbatis.model.usermapper.getuserbyid", 1);可以采用接口加 SQL 语句的方式来解决 , SQL 语句理解为是接口的实现 :
1. 新建接口类 :
пакет com.john.hbatis.mapper; Импорт com.john.hbatis.model.user; публичный интерфейс iusermapper {user getUserbyid (int id); } 2. 修改 user.xml 文件 , 确保 пространство имен 属性值和接口的全限定名相同 , 且 ID 属性值和接口方法名相同 :
<mapper namespace = "com.john.hbatis.mapper.iusermapper"> <select id = "getuserbyid"
3. 在 mybatisbasictest 类中添加测试方法 :
@Test public void QueryinInterfacewayTest () {sqlSession session = sqlSessionFactory.opensession (); Iusermapper mapper = session.getmapper (iusermapper.class); // 如果 пространство имен 和接口全限定名不一致 , 报 org.apache.ibatis.binding.bindingexception: тип интерфейса com..iusermapper не известен для MapperRegistry 异常。 user user = mapper.getUserbyId (1); log.info ("{}: {}", user.getName (), user.getAddress ()); }附 :
上面的实现是把 SQL 语句放在 XML 文件中 , 并通过一定的约束来保证接口能够在 XML 中找到对应的 SQL 语句;
还有一种方式是通过接口+注解 SQL 方式来交互数据 :
1. 新建接口类 :
пакет com.john.hbatis.mapper; Импорт org.apache.ibatis.annotation.select; Импорт com.john.hbatis.model.user; Общественный интерфейс iusermapper2 {@select ({"select * from` user` где id = #{id} "}) user getUserbyid (int id); } 2. 在 Configuration.xml 文件中加入 :
<mappers> <mapper /> < /mappers>
或在初始化语句中加入 :
sqlSessionFactory.getConfiguration (). AddMapper (iusermapper2.class);
3. 相应修改上面的测试方法 :
Iusermapper2 mapper = session.getmapper (iusermapper2.class);