新建项目 (我使用的是 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: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <GroupId> Mybatis </rom grouped> <ArtifActid> Mybatis-study-01 </ artifactid> <version> 0.0.1-SNAPSHOT </DERNIFICATION> <name> mybatis-01 </name> <url> http://maven.apache.org </url> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> </properties> <dependance> <dependency> <proupId> junit </proutid> <ArtefactId> JUnit </ artifactid> <Dersion> 4.10 </DERNIERSE> <COPE> TEST </cope> </ Dependency> <Dedency> <ProupId> Org.Mybatis </proupId> <Artefactid> Mybatis </prowatid> <version> 3.2.3 </DERNIFRÉSE> </DENDENCEM <ArtefactId> MySQL-Connector-Java </Retifactid> <Dersion> 5.1.27 </DERNIFRES> </ Dependency> </Dependance> </randing>
二、创建数据库 Mybatis-test
新建一张 Utilisateur 表用于测试。建表 SQL 如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `password` varchar(255) default NULL, `user_name` varchar(50) default NULL, `user_age` int(11) default NULL, `user_address` varchar(200) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `userName` (`user_name`)) EN
插入一条数据
Insérer dans les valeurs «utilisateur» («1», «123131», «été», «100», «Shanghai, Pudong»);
三、在项目中编写 Pojo 对象。
package com.zf.mybatis.pojo; public class user {private int id; mot de passe de chaîne privé; Nom d'utilisateur de chaîne privée; utilisateur de chaîne privée; chaîne privée 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 utilisateur; } public void setUserage (String Userage) {this.Userage = utilisateur; } public String getUserAddress () {return userAddress; } public void SetUserAddress (String userAddress) {this.UserAddress = userAddress; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; }}四、编写 Pojo 对应的映射文件 User.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep 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, mot de passe, user_name comme username, user_age en tant qu'utilisateur, user_address en tant qu'UserAddress </sql> <Select Id = "SELECTBYID" Parontertype = "int" Int " resultType = "user"> select <inclue refid = "queryfields" /> from `user` where id = # {id} </lect> <insert id =" add "ParameterType =" user "useGeneratedKeys =" true "keyproperty =" id "> insert dans` user` (mot de passe, user_name, user_age, user_address) # {nom d'utilisateur}, # {userage}, # {userAddress}) </sert> <update id = "update" ParameterType = "user"> user `User` Set password = # {mot de passe}, user_name = # {userraD}, user_age = # {userAg <delete id = "DeleteByid" ParameterType = "int"> Supprimer de `User` WHERE ID = # {id} </preaking> </nausper>注意 : 上面的 Espace de noms 的值为 com.zf.mybatis.pojo.UserMapper , 可以自定义 , UserMapper 不是一个类 , 不需要存在的。
另外 , mybatis 会将从数据库查询出来的记录根据列名与 pojo 中的字段进行匹配 , 所以上面的 user_name , user_age, user_address 这几个字段都取了别名 , 跟 pojo 中的字段相对应。 如果不起别名 , 查询出来的对象 , 这几个字段是没有值的。
五、编写 Mybatis 的配置文件 Mybatis-Config.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> <! alias = "user" type = "com.zf.mybatis.pojo.user" /> </pactaliases> <! - 数据库配置信息 -> <Environments default = "Development"> <Environment id = "Development"> <transactionManager type = "jdbc" /> <dataSource type = "poched"> <propriété name = "Driver" value = "com.mysql.jdb. /> <prewing" name = "url" value = "jdbc: mysql: //127.0.0.1: 3306 / mybatis-test" /> <propriété name = "username" value = "root" /> <propriété name = "mot de passe" value = "root" /> </ dataSource> </vironment> </ Environments> <! ressource = "conf / user.xml" /> </mappers> </filon
在该配置文件中配置了数据库的链接方式 , 以及注册所有的映射文件 , 还可以设置 Mybatis 的一些参数。
现在就可以编写测试类了。来测试一下。
package com.zf.mybatis; import java.io.ioException; import java.io.reader; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.SESSESSESSEFACTORY; org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.before; import org.junit.test; import com.zf.mybatis.pojo.user; classe publique testmybatis {private sqlSessionFactory sqlsessionfactory; lecteur de lecteur privé; @Before public void init () {try {Reader = Resources.getResourceAsReader ("MyBatis-Config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (lecteur); } catch (ioException e) {e.printStackTrace (); }} @Test public void testQuerySeuser () {SqlSession Session = SqlSessionFactory.OpenSession (); essayez {utilisateur utilisateur = (utilisateur) session.selectone ("com.zf.mybatis.pojo.usermapper.selectbyid", 1); System.out.println (user.getUserAddress ()); System.out.println (user.getUserName ()); } enfin {session.close (); }} @Test public void testiNserTuser () {SqlSession Session = SqlSessionFactory.OpenSession (); essayez {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", utilisateur); session.Commit (); System.out.printf ("UserId:% D, 总记录条数:% D", user.getId (), ResultCount); // 获取插入对象的 id} enfin {session.close (); }} @Test public void TestupDateUser () {SQLSession Session = SqlSessionFactory.OpenSession (); essayez {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", utilisateur); session.Commit (); System.out.printf ("修改条数:% D", UpdateCount); } enfin {session.close (); }} @Test public void testdelete () {SQLSession Session = SQLSessionFactory.OpenSession (); essayez {// 返回值是删除条数 int deleteCount = session.update ("com.zf.mybatis.pojo.usermapper.deletebyid", 4); session.Commit (); System.out.printf ("删除条数:% D", DeleteCount); } enfin {session.close (); }}}运行 TestQueryUser : :
Shanghai, Pudongsummer
到此 , 一个 Mybatis 的 Helloworld 类型的小程序就出来了。
PS : Mybaits 配置文件报错解决
Mybaits 的配置文件校验很诡异 , 节点的位置还有要求如下 , :
Le contenu du type d'élément "Configuration" doit correspondre "(Properties?, Paramètres?, TypeAliases?, TypeHandlers?, ObjectFactory?, ObjectWrapperFactory?, Plugins?, Environments?, MAPTEPS?)". <? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> <Environments par défaut = "Development"> <ovelong <transactionManager Type = "JDBC" /> <DataSource Type = "Poolled"> <propriété name = "Driver" value = "oracle.jdbc.driver.oracledriver" /> <propriété name = "url" value = "jdbc: oracle: mince: @xx: 1521: xx" /> <propriété = "userName" value = "value =" IREPORT " Value = "xxxx" /> </ dataSource> </ Environment> </ Environments> <Cypealiases> <typealias type = "com.ice.stat.online.model.eventflag" alias = "EventFlag" /> </ Modeliases> <MAPPERS> <MAPPER RESSOURCEAUX = "COM / ICE / STAT / ENVERT </mappers> </filon
把 typealias 放到最上面就好了说 :
<? 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"> <configuration> <typalases> <typalias type = "com.ice.stat.online.model.eventflag" alias = "eventflag" /> </pactaliases> <Environments default = "Development"> <Environment id = "Development"> <transactionManager type = "jdbc" /> <dataSource type = "PoELELED"> <propriété nom = "Drive" value = "oracle.jdbc.Diver. name = "url" value = "jdbc: oracle: mince: @xx: 1521: xx" /> <propriété name = "username" value = "ireport" /> <propriété name = "mot de passe" value = "xxxx" /> </ dataSource> </vironment> </virdements> <mappers> <mappen ressource = "com / ice / stat / online / modèle / hbm / eventflagmapper.xml" /> </mappers> </ configuration>