新建项目(我使用的是 Maven 项目) mybatis-study-01
一、加入 mybatis 与 mysql-connector 依赖包到 pom 文件
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelVersion> <MoupRupid> mybatis </proupid> <artifactid> mybatis-study-01 </artactid> <versers> 0.0.1-snapshot </verversion> <Artaging> <name> mybatis-01 </name> <sl> http://maven.apache.org </sl> <properties> <jecter.build.sourceEncoding> utf-8 </project.build.sourceEncoding> </propiedadies> <dependency> <Ententency> <grupiD> junit </groupid> <ArtId> <Artid> <Artid> <versión> 4.10 </versión> <cope> test </cope> </pepertency> <epardency> <moupid> org.mybatis </proupid> <artifactid> mybatis </artifactid> <versión> 3.2.3 </versión> </dependencia> <pendency> <uproupid> mysql </proupid> <artifactID> mysql-confonector-java </artifactid> <versión> 5.1.27 </versión> </pendency> </pendencs> </proyecto>
二、创建数据库 prueba mybatis
新建一张 Usuario 表用于测试。建表 SQL 如下 :
Crear tabla `user` (` id` int (11) no null auto_incement, `contraseña` varchar (255) NULL predeterminado,` user_name` varchar (50) NULL predeterminado, `user_age` int (11) predeterminado NULL,` User_address` varchar (200) NULL predeterminado, clave primaria (`Id`), Key` USERNAME` (`User_address` Varchar (200) NULL predeterminado, clave primaria (` Id`), Key `UserName` (` User_Address`)
插入一条数据
Inserte en valores de `usuarios ('1', '123131', 'verano', '100', 'Shanghai, Pudong');
三、在项目中编写 POJO 对象。
paquete com.zf.mybatis.pojo; usuario de clase pública {private int id; contraseña de cadena privada; nombre de usuario de cadena privada; Usaje de cadena privada; String private String UserAddress; public int getId () {return id; } public void setid (int id) {this.id = id; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getUserage () {return userage; } public void setUserage (String Userage) {this.userage = userage; } public String getUserAddress () {return userAddress; } public void setUserAddress (string userAddress) {this.userAddress = userAddress; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; }}四、编写 POJO 对应的映射文件 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.zf.mybatis.pojo.usermapper"> <!-使用 sql 标签可以将公 标签可以将公 的 sql 提取出来复用-> <sql id = "queryfields"> id, contraseña, user_name as username, user_age como userage, user_address como useraddress </sql> <select id = "selectyByid" INTRATIME "INTRATIS resultType="User"> select <include refid="queryFields"/> from `user` where id = #{id} </select> <insert id="add" parameterType="User" useGeneratedKeys="true" keyProperty="id" > insert into `user` (password , user_name , user_age , user_address) values(#{password} , #{userName} , #{userage}, #{userAddress}) </sert> <update id = "update" parameterType = "user"> uply `user` set contraseS id = "deletyById" parametertype = "int"> Eliminar de `user` donde id = #{id} </elete> </mapper> : : 上面的 Espacio de nombres 的值为 com.zf.mybatis.pojo.Usermapper , 可以自定义 , 不是一个类 不是一个类 不需要存在的。 不需要存在的。 不需要存在的。 不需要存在的。 可以自定义 可以自定义 可以自定义 可以自定义 可以自定义 可以自定义 可以自定义 可以自定义 可以自定义
另外 , mybatis 会将从数据库查询出来的记录根据列名与 pojo 中的字段进行匹配 , 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 所以上面的 如果不起别名 查询出来的对象 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段都取了别名 跟 跟 跟 跟 中的字段相对应。 如果不起别名 查询出来的对象 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。 这几个字段是没有值的。
五、编写 mybatis 的配置文件 mybatis-config.xml
<? xml versión = "1.0" encoding = "utf-8"?> < alias = "user" type = "com.zf.mybatis.pojo.user"/> </typealiases> <!-数据库配置信息-> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager = "jdbc"/> <dataSource type = "agrupado"> <name de propiedad = "valor" valor = "com.mysql.J.J.jdbiver"/" name = "url" valor = "jdbc: mysql: //127.0.0.1: 3306/mybatis-test"/> <propiedad name = "username" valor = "root"/> <Property name = "contraseña" valor = "root"/> </dataSource> </balindments> </entornos> <! Resource = "conf/user.xml"/> </mappers> </figuration>
在该配置文件中配置了数据库的链接方式 , 以及注册所有的映射文件 还可以设置 还可以设置 mybatis 的一些参数。
现在就可以编写测试类了。来测试一下。
paquete com.zf.mybatis; import java.io.ioException; import java.io.reader; import org.apache.io.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionFactoryBuilder; import org.junit.before; import org.junit.test; import com.zf.mybatis.pojo.user; clase pública testmybatis {sqlsessionFactory sqlSessionFactory; lector privado lector; @Bebore public void init () {try {reader = recursos.getResourCeaseReader ("myBatis-Config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (Reader); } catch (ioException e) {E.PrintStackTrace (); }} @Test public void testQueryUser () {sqlsession session = sqlsessionFactory.opensession (); Pruebe {usuario user = (usuario) session.selectone ("com.zf.mybatis.pojo.usermapper.selectbyid", 1); System.out.println (user.getUserAddress ()); System.out.println (user.getUsername ()); } finalmente {session.close (); }} @Test public void testInsertUser () {sqlsession session = sqlSessionFactory.opensession (); intente {user user = new User (); user.setUsername ("ABCDE"); user.setUserage (15); user.setUserAddress ("Hangzhou/Zhejiang"); user.setPassword ("123456"); // 返回值是记录条数 int resultcount = session.insert ("com.zf.mybatis.pojo.usermapper.add", usuario); session.commit (); System.out.printf ("UserId:%D, 总记录条数:%D", user.getID (), resultCount); // 获取插入对象的 id} finalmente {session.close (); }} @Test public void topDateUser () {sqlsession session = sqlsessionFactory.opensession (); intente {user user = new User (); user.setID (5); user.setUsername ("updateName"); user.setUserage (101); user.setUserAddress ("Shenzhen/Guangdong"); user.setPassword ("000000"); // 返回值是修改条数 int updateCount = session.update ("com.zf.mybatis.pojo.usermapper.update", usuario); session.commit (); System.out.printf ("修改条数:%d", updateCount); } finalmente {session.close (); }} @Test public void testDelete () {sqlsession session = sqlsessionFactory.opensession (); Pruebe {// 返回值是删除条数 int deletecount = session.update ("com.zf.mybatis.pojo.usermapper.deletebyid", 4); session.commit (); System.out.printf ("删除条数:%d", deletecount); } finalmente {session.close (); }}}运行 testQueryuser 结果如下 :
Shanghai, PudongSummer
到此 , 一个 mybatis 的 helloworld 类型的小程序就出来了。
PD: mybaits 配置文件报错解决
Mybaits 的配置文件校验很诡异 节点的位置还有要求如下 节点的位置还有要求如下 会报错 :
El contenido del tipo de elemento "Configuración" debe coincidir "(¿Propiedades?, Configuración?, Typealiases?, TypeHandlers?, ObjectFactory?, ObjectWrapperFactory?, Complementos?, Entornos?, ¿Mapeadores?)". <? xml versión = "1.0" encoding = "utf-8"?> < <TransActionManager type = "JDBC"/> <DataSource type = "Pooled"> <Property Name = "Driver" Value = "Oracle.jdbc.driver.oracledRiver"/> <Property Name = "url" value = "jdbc: oracle: fin: @xx: 1521: xx"/> <nombre de propiedad = "nombre de propiedad =" value = "ireport"/>>> "contraseña"/"contraseña" value = "xxxx"/> </shasource> </entorno> </entornos> <pyealiases> <typealias type = "com.ice.stat.online.model.eventflag" alias = "eventflag"/> </typealiases> <mappers> <mepper recurse = "com/ie/stat/online/model/hbm/eventflagmaper.xmllly </mappers> </figuration>
把 Typealiases 放到最上面就好了说 :
<? xml versión = "1.0" encoding = "utf-8"?> < type="com.ice.stat.online.model.EventFlag" alias="EventFlag"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name = "Url" valor = "jdbc: oracle: Thin: @xx: 1521: xx"/> <propiedad name = "username" value = "irePort"/> <propiedad name = "contraseña" value = "xxxx"/> </satasource> </balindments> Resource = "COM/ICE/STAT/ONLINE/MODEL/HBM/EVENTFLAGMAPPER.XML"/> </MAPPERS> </Configuración>