主要搭建过程
1. Pom.xml 文件中加入 mybatis 和数据库依赖 , 这里使用 mysql :
<Properties> <mybatis.version> 3.2.3 </mybatis.version> <mysql.version> 5.1.26 </mysql.version> <slf4j.version> 1.7.7 </slf4j.version> <terestng.version> 6.8.7.7 </slf4j.version> <terestng.version> 6.8.7.7 </slf4j.version> <terestng.version> 6.8.7.7 </slf4j.version> <groupId> org.mybatis </groupId> <ArTifactId> mybatis </t Artifactid> <version> $ {mybatis.version} </version> </dependency> <!-Database driver-> <grouptid> MySQL </groupid> <ArTtifacTID> MySQL-Conncy <version> $ {mysql.version} </version> </dependency> <!-mybatis 启动要加载 log4j-> <dependency> <groupid> org.slf4j </groupid> <ArTifactid> slf4j-gog4j12 </artifactid> <depua> <ArtifacTid> </artifactid </versi </slf4j.ap. <dependency> <GroupId> org.testng </groupId> <ArTifactId> testng </artifactid> <version> $ {testng.version} </version> </dependency> </dependensi>
2. 在类路径下创建 mybatis 的配置文件 configuration.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Configuration Public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <pypypys> <! alias = "pengguna" type = "com.john.hbatis.model.user" /> </yypealiases> <lingkungan default = "pengembangan"> <lingkungan id = "pengembangan"> <TransactionManager type = "jdbc" /<DataSource type = "pooled"> <!-数据源-> <jdbc " /<DataSource type =" pooled "> <!-数据源-> <jdbc" <"name" <DataSource = "pooled"> <!-数据源-> <"name" <"data" nilai "com." cOMY "> <!-数据源-> <" jdbc "<" cOM. "cOMYS =" COMYS =! name = "url" value = "jdbc: mysql: // localhost: 3306/hbatis"/> <name properti = "nama pengguna" value = "root"/> <name properti = "kata sandi" value = "123456"/> </dateSource> </lingkungan> </EnvireTrements> <mappers> <or! resource = "com/john/hbatis/model/user.xml"/> </mappers> </configuration>
3. 执行创建数据库和表的 SQL :
- Buat database bernama 'hbatis'. -- It's OK to use `, not OK to use ' or " surrounding the database name to prevent it from being interpreted as a keyword if possible. CREATE DATABASE IF NOT EXISTS `hbatis` DEFAULT CHARACTER SET = `UTF8`; -- Create a table named 'User' CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int (11) null default, `address` varchar (200) null, kunci utama (` id`)) engine = innodb auto_increment = 2 charset default = utf8;
4. Com.john.hbatis.model.user 类 :
pengguna kelas publik {private int id; nama string pribadi; usia string pribadi; alamat string pribadi; // getters dan setter dihilangkan // 如果有带参数的构造器 , 编译器不会自动生成无参构造器。当查询需要返回对象时 , orm 框架用反射来调用对象的无参构造函数 , : : java.lang.nosuchmethodeException: com.john.hbatis.model.user. <inin> () // : : Pengguna publik () {} Pengguna Publik (Int ID, STRING ALAMAT) {ini. this.address = alamat; } pengguna publik (nama string, usia int, alamat string) {this.name = name; this.age = usia; this.address = alamat; }}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 naMapper = "hnn.hnn.hnn.hnn.hnn <pilih id = "getUserById" parameTerType = "int" resultType = "user"> pilih * dari `user` where id = #{id} </select> </mapper>
5. : :
kelas publik mybatisbasictest {private static final logger log = loggerFactory.getLogger (mybatisbasictest.class); SQLSessionFactory SQLSessionFactory privat; Pembaca Pembaca Statis Pribadi; @Beforeclass public static void initial () {try {reader = resources.getResourCeasReader ("configuration.xml"); SQLSessionFactory = SQLSessionFactoryBuilder baru (). Build (pembaca); } catch (ioException e) {log.error ("Kesalahan dilemparkan saat membaca konfigurasi: {}", e); } akhirnya {if (reader! = null) {coba {reader.close (); } catch (ioException e) {log.error ("Kesalahan dilemparkan saat menutup pembaca: {}", e); }}}} @Test public void queryTest () {SQLSession sesi = sqlSessionFactory.opensession (); Pengguna pengguna = (user) session.selectone ("com.john.hbatis.model.usermapper.getUserbyId", 1); log.info ("{}: {}", user.getName (), user.getAddress ()); }}以接口方式交互数据
上面的环境搭建是采用 Sqlsession 的通用方法并强制转换的方式 , : :
Pengguna pengguna = (user) session.selectone ("com.john.hbatis.model.usermapper.getUserbyId", 1);可以采用接口加 sql 语句的方式来解决 , sql 语句理解为是接口的实现 :
1. : :
paket com.john.hbatis.mapper; impor com.john.hbatis.model.user; antarmuka publik iusermapper {pengguna getUserbyId (int id); } 2. 修改 user.xml 文件 , 确保 namespace 属性值和接口的全限定名相同 , 且 id 属性值和接口方法名相同 :
<mapper namespace = "com.john.hbatis.mapper.iusermapper"> <pilih id = "getUserbyId"
3. 在 mybatisbasictest : :
@Test public void queryIninterfacewaytest () {sqlSession session = sqlSessionFactory.opensession (); Iusermapper mapper = session.getMapper (iusermapper.class); // 如果 namespace 和接口全限定名不一致 , 报 org.apache.atisis.binding.BindingException: Type Interface com..iusermapper tidak diketahui oleh mapperregistry 异常。 pengguna pengguna = mapper.getUserbyId (1); log.info ("{}: {}", user.getName (), user.getAddress ()); }附 :
上面的实现是把 Sql 语句放在 xml 文件中 , 并通过一定的约束来保证接口能够在 xml 中找到对应的 sql 语句;
还有一种方式是通过接口+注解 SQL 方式来交互数据 :
1. : :
paket com.john.hbatis.mapper; impor org.apache.ibatis.annotations.Select; impor com.john.hbatis.model.user; antarmuka publik iusermapper2 {@select ({"pilih * dari` user` where id = #{id} "}) pengguna getUserbyId (int id); } 2. 在 configuration.xml : :
<petpers> <mapper /> </phappers>
或在初始化语句中加入 :
sqlSessionFactory.getConfiguration (). AddMapper (iusermapper2.class);
3. : :
Iusermapper2 mapper = session.getMapper (iusermapper2.class);