主要搭建过程
1. Pom.xml 文件中加入 mybatis 和数据库依赖 , 这里使用 mysql :
<Proteies> <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> </propiedades> </propiedades> </propiedades> </propiedades> </propietarios> <propiences> <propiences> <propiences> </propietarios> <propiences> <propiences> </propietarios> <propiences> </propietarios> <propiaciones> <propiaciones> </propietarios> <propiaciones> <MoupRid> org.mybatis </groupid> <artifactid> mybatis </artifactid> <versions> $ {mybatis.version} </ververion> </dependency> <!-Database Driver-> <epardency> <MoupRoupId> mysql </groupId> <Atifactid> mysql-connector-java </artfactiD> <version>${mysql.version}</version> </dependency> <!-- mybatis启动要加载log4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.api.version}</version> </dependency> <!-- Test --> <dependency> <MoupRid> org.testng </groupid> <artifactId> testng </arfactId> <versión> $ {testng.version} </versión> </pendency> </pendencs>
2. 在类路径下创建 MyBatis 的配置文件 Configuración.xml
<? xml versión = "1.0" encoding = "utf-8"?> < alias = "user" type = "com.john.hbatis.model.user" /> < /typealiases> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager type = "jdbc" /> <dataSource type = "agrupado"> <!-数据源-> <nombre de propiedad = "vide" name = "url" valor = "jdbc: mysql: // localhost: 3306/hbatis"/> <propiedad name = "username" value = "root"/> <propiedad name = "contraseña" valor = "123456"/> </shasource> </balindmenth> </baluthmentments> <mappers> <! Resource = "COM/John/Hbatis/Model/User.xml"/> </Mappers> </Configuración>
3. 执行创建数据库和表的 SQL :
- Cree la base de datos llamada 'Hbatis'. - Está bien usar `, no está bien usar 'o" rodear el nombre de la base de datos para evitar que se interprete como una palabra clave si es posible. Cree la base de datos si no existe `hbatis` set de caracteres predeterminada = `utf8`;- cree una tabla llamada' usuario 'crea tabla` user` (`id` int (11) no null auto_increment,` name` var `name`` name` name `50) NECHAR (10) TABLA` ID` `ID` INT (11) no null. NULL, `Dirección` Varchar (200) NULL, CLAVE PRIMARIA (` ID`)) MOTOR = InnoDB Auto_Increment = 2 Charset predeterminado = UTF8;
4. Com.john.hbatis.model.user 类 :
Usuario de clase pública {private int id; nombre de cadena privada; edad de cadena privada; dirección de cadena privada; // Los getters y los establecedores se omiten // 如果有带参数的构造器 , , , orm 框架用反射来调用对象的无参构造函数 , 导致异常 : java.lang.nosuchmethodexception: com.john.hbatis.model.user. <Init> () // 这时需要明确写出 : Usuario público () {} Usuario público (int, String Discuss) {this.id = id; this.address = dirección; } Usuario público (nombre de cadena, int Age, String Dirección) {this.name = name; this.age = edad; this.address = dirección; }}com/John/Hbatis/Model 路径下的 user.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper Namespace = "com.john.hbatis.model.usermapper"> <select id = "getUserByid" parametertype = "int" resultType = "user"> select * de `user` donde id = #{id} </select> </mapper>
5. 测试类 :
clase pública myBatisBasictest {private static final logger log = loggerFactory.getLogger (myBatisBasictest.class); sqlsession factory sqlsession sqlsessionFactory privado; Lector de lector estático privado; @Beforeclass public static void inicial () {try {reader = recursos.getResourceAsreader ("configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (Reader); } catch (ioException e) {log.error ("Error lanzado mientras lee la configuración: {}", e); } Finalmente {if (lector! = null) {try {reader.close (); } catch (ioException e) {log.error ("Error lanzado al cerrar el lector: {}", e); }}}} @Test public void QueryTest () {SQLSession Session = SqlSessionFactory.opensession (); Usuario user = (usuario) session.selectone ("com.john.hbatis.model.usermapper.getuserbyid", 1); log.info ("{}: {}", user.getName (), user.getAddress ()); }}以接口方式交互数据
上面的环境搭建是采用 sqlsession 的通用方法并强制转换的方式 , : :
Usuario user = (usuario) session.selectone ("com.john.hbatis.model.usermapper.getuserbyid", 1);可以采用接口加 SQL 语句的方式来解决 , SQL : :
1. 新建接口类 :
paquete com.john.hbatis.mapper; import com.john.hbatis.model.user; interfaz pública iusermapper {usuario getUserByid (int id); } 2. 修改 User.xml 文件 , 确保 espacio de nombres 属性值和接口的全限定名相同 , 且 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); // 如果 Espacio de nombres 和接口全限定名不一致 , 报 报 org.apache.ibatis.binding.bindingException: type interface com..iusermapper no es conocido por el mapperregistry 异常。 user user = mApper.getuserById (1); log.info ("{}: {}", user.getName (), user.getAddress ()); }附 :
上面的实现是把 sql 语句放在 xml 文件中 , 并通过一定的约束来保证接口能够在 xml 中找到对应的 sql 语句;
还有一种方式是通过接口+注解 sql 方式来交互数据 :
1. 新建接口类 :
paquete com.john.hbatis.mapper; importar org.apache.ibatis.annotations.select; import com.john.hbatis.model.user; interfaz pública iUsermapper2 {@select ({"Seleccionar * de` user` donde id = #{id} "}) user getUserById (int id); } 2. 在 Configuración.xml 文件中加入 :
<Mappers> <Mapper /> </mappers>
或在初始化语句中加入 :
SQLSessionFactory.getConfiguration (). AddMapper (iusermapper2.class);
3. : :
Iusermapper2 mapper = session.getMapper (iusermapper2.class);