新建项目 (我使用的是 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mybatis</groupId> <artifactId>mybatis-study-01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <mame> mybatis-01 </name> <url> http://maven.apache.org </url> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> </properties> <dependencies> <groupe> junit> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency> <dependency> <groupId>mysql</groupId> <Artifactid> mysql-connector-java </artifactid> <version> 5.1.27 </version> </gethyse> </depertive> </project>
二、创建数据库 mybatis-тест
新建一张 Пользователь 表用于测试。建表 SQL 如下 :
Создать таблицу `user` (` `id` int (11) не null auto_increment,` password` varchar (255) по умолчанию Null, `user_name` varchar (50) null по умолчанию,` user_age` int (11) по умолчанию null, `user_address` varchar (200) nefault null (` `id '), user_address` varchar (200) null, первичный ключ (` id'), us user keemer `wors earmer` worse `world_address` varchar (200).
插入一条数据
Вставить в «пользовательские» значения ('1', '123131', 'Summer', '100', 'Shanghai, Pudong');
三、在项目中编写 Pojo 对象。
пакет com.zf.mybatis.pojo; пользователь открытого класса {private Int Id; Private String Password; частное имя пользователя; Приватная строка пользователя; частная строка 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 пароль; } public void setPassword (String password) {this.password = password; }}四、编写 pojo 对应的映射文件 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"> mapper. namespace = "com.zf.mybatis.pojo.usermapper"> <!-使用 SQL 标签可以将公 标签可以将公 的 SQL 提取出来复用-> <SQL ID = "QueryFields"> ID, пароль, user_name как имя пользователя, user_age as userage, user_address as useraddress </sql> <see ud = "selectbydty" user_address as useraddress </sql> <see ud = "selectbydty" "user_address as useraddress </sql> <see ud as erageged". ResultType = "user"> select <incluct refid = "QueryFields"/> из `user` where id = #{id} </select> <insert id =" добавить "parametertype =" user "useGeneratedKeys =" true "keyProperty =" id "> Insert in` user '(password_name, user_age, user_address) value ( #, #, #, #, #, #, #, #, #, #, #, #, #, valless). #{username}, #{userage}, #{userAddress}) </insert> <обновление идентификатор = "Обновление" parameterType = "user"> update `user` set password = #{password}, user_name = #{userAme}, user_age = #{userage}, user_address = #{userAddres <delete id = "deleteById" parameterType = "int"> delete из `user`, где id = #{id} </delete> </mapper> : : 上面的 пространство имен 的值为 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 public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <ponfiguration> <! type = "com.zf.mybatis.pojo.user"/> </typealiases> <!-数据库配置信息-> <среда default = "Разработка"> <среда идентификатор = "разработка"> <транзакция типа = "jdbc"/> <dataSource type = "booled"> name = "grive" value = "com.mysql.jdbc. value = "jdbc: mysql: //127.0.0.1: 3306/mybatis-test"/> <name = "username" value = "root"/> <name = "password" value = "root"/> </dataSource> </invirondation> </ervines> <!-映射文件-> <mappers> </mapper rescriver> "/conmleml eractm. </mappers> </configuration>
在该配置文件中配置了数据库的链接方式 , 以及注册所有的映射文件 还可以设置 mybatis 的一些参数。
现在就可以编写测试类了。来测试一下。
пакет com.zf.mybatis; import java.io.ioexception; import java.io.reader; импорт org.apache.ibatis.io.resources; импорт org.apache.ibatis.session.sqlsession; импорт org.apache.ibatis.session.sqlsessionFactory; org.apache.ibatis.session.sqlSessionFactoryBuilder; импорт org.junit.fore; import org.junit.test; импорт com.zf.mybatis.pojo.user; public class testmybatis {private sqlsessionFactory sqlSessionFactory; Частный читатель читателя; @Before public void init () {try {Reader = resources.getResourCeasReader ("mybatis-config.xml"); sqlSessionFactory = new sqlSessionFactoryBuilder (). Build (Reader); } catch (ioException e) {e.printstackTrace (); }} @Test public void testqueryuser () {sqlSession session = sqlSessionFactory.opensession (); try {user user = (user) session.selectone ("com.zf.mybatis.pojo.usermapper.selectbyid", 1); System.out.println (user.getUserAddress ()); System.out.println (user.getusername ()); } наконец {session.close (); }} @Test public void testinsertuser () {sqlSession session = sqlSessionFactory.opensession (); try {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", user); session.commit (); System.out.printf ("userId:%d, 总记录条数:%d", user.getId (), resultCount); // 获取插入对象的 ID} наконец {session.close (); }} @Test public void testupDateUser () {sqlSession session = sqlSessionFactory.opensession (); try {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", user); session.commit (); System.out.printf ("修改条数:%d", UpdateCount); } наконец {session.close (); }} @Test public void testDelete () {sqlSession session = sqlSessionFactory.opensession (); try {// 返回值是删除条数 int deletecount = session.update ("com.zf.mybatis.pojo.usermapper.deletebyid", 4); session.commit (); System.out.printf ("删除条数:%d", deleteCount); } наконец {session.close (); }}}运行 Testqueryuser 结果如下 :
Шанхай, Пудунгсммер
到此 , 一个 mybatis 的 Helloworld 类型的小程序就出来了。
PS : MyBaits 配置文件报错解决
Mybaits 的配置文件校验很诡异 节点的位置还有要求如下 , 会报错 :
Содержание типа элемента «конфигурация» должно соответствовать »(свойства?, Настройки? <? xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <configuration> <cervination afault upectome upertault "effection upperation" upporting "efference vervaction"> just vervaction "<> reproscomation" efferuction ">" Развитие "развитие" развитие ". type = "jdbc"/> <dataSource type = "booled"> <name = "driver" value = "oracle.jdbc.driver.oracledriver"/> <name = "url" value = "jdbc: oracle: thin: @xx: 1521: xx"/> <property name = "usname" value = "ireport"/> <provid "/" name = "useraname =" value = ""/> <provid "/" "Passwort"/"". value = "xxxx"/> </dataSource> </ervenery> </ervinements> <typealiases> <typealias type = "com.ice.stat.online.model.eventflag" alias = "eventflag"/> </typealiases> <mappers> <mapper resource = "com/ice/inember/inomtry/hbm/eventflags> eventflags> eventflags> eventflags> eventflags. </mappers> </configuration>
把 Typealiases 放到最上面就好了说 :
<? xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <cistinti type = "com.ice.stat.online.model.eventflag" alias = "eventflag"/> </typealiases> <среда default = "Разработка"> <среда идентификация = "разработка"> <transactionmanager = "jdbc"/> <dataSource type = "booled"> <properation manal name = "url" value = "jdbc: oracle: thin: @xx: 1521: xx"/> <name = "username" value = "ireport"/> <name = "password" value = "xxxx"/> </dataSource> </environment> </ervinentments> <mappers> <mapper "/> resource = "com/ice/stat/online/model/hbm/eventflagmapper.xml"/> </mappers> </configuration>