新建项目 (我使用的是 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> <puperid> mybatis </groupid> <artifactId> mybatis-study-01 </stifactId> <ugress> <artifactId> mybatis-study-01 </stifactId> <ugress> <artifshet> SNAPSHSHSHAPSHONPSHONPSHONPSHOTSHONPSHONPSHOTSHONPSHOTSHONPSHOTSHONPSHSHOTSHONPSHOTSHONPSHOTSHONPSHOTSHOTIDO <//Artifactid> <ugress> 0.1-SNAPSHSHET> <name> mybatis-01 </name> <url> http://maven.apache.org </url> <sperties> <Project.build.sourceEncoding> utf-8 </project.build.sourcencoding> </////////,///, </dependências> </dependência> </dependência> <Project.Build.SourceEncoding> </soupts> <pendências> <Peject> <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> <TarfactId> mysql-conector-java </artifactId> <versão> 5.1.27 </sipers> </dependency> </dependências> </projection>
二、创建数据库 Mybatis-test
新建一张 Usuário 表用于测试。建表 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
插入一条数据
Insira em `user` valores ('1', '123131', 'verão', '100', 'shanghai, pudong');
三、在项目中编写 Pojo 对象。
pacote com.zf.mybatis.pojo; usuário público usuário {private int id; senha de sequência privada; Nome de usuário privado de string; Usuário de String Private; String privada 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 = nome de usuário; } public string getUserAge () {return userage; } public void setUserAge (string userage) {this.UserAge = Useragem; } public string getUserAddress () {return userAddress; } public void setUserAddress (string userAddress) {this.UserAddress = userAddress; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; }}四、编写 POJO 对应的映射文件 User.xml
<? xml versão = "1.0" coding = "utf-8"?> <! namespace = "com.zf.mybatis.pojo.usermApper"> <!-使用 sql 标签可以将公 的 的 sql 提取出来复用-> <sql id = "queryfields"> id, senha, user_name como usuário, user_age como userage, userAg. 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} , #{nome de usuário}, #{userAge}, #{userAddress}) </insert> <update id = "update" parametertype = "user"> update `user` set 'senha = #{senha}, user_name = #{username}, user_age = #}}, user_add} = user_name = #{username}, user_age = #}}, user_add <delete id = "DeletebyId" ParameterType = "int"> excluir de `user` where id = #{id} </lete> </mapper>注意 : 上面的 namespace 的值为 com.zf.mybatis.pojo.userMapper , 可以自定义 , UserMApper 不是一个类 , 不需要存在的。
另外 , mybatis 会将从数据库查询出来的记录根据列名与 pojo 中的字段进行匹配 , 所以上面的 user_name , user_age, user_address 这几个字段都取了别名 , 跟 pojo 中的字段相对应。 , , , , 这几个字段是没有值的。
五、编写 mybatis 的配置文件 mybatis-config.xml
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 //" "http://mybatis.org/dtd/mybatis-3-config.diSs"> alias = "usuário" tipo = "com.zf.mybatis.pojo.user"/> </typeAliases> <!-数据库配置信息-> <ambientes default = "desenvolvimento"> <ambiente id = "desenvolvimento"> <transação name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis-test"/> <propriedade name = "nome de usuário" value = "root"/> <names = "senha" value = "root"/> </satasource> </fimment> </cimorments> <! Resource = "conf/user.xml"/> </mappers> </figuration>
在该配置文件中配置了数据库的链接方式 , 以及注册所有的映射文件 , 还可以设置 mybatis 的一些参数。
现在就可以编写测试类了。来测试一下。
pacote com.zf.mybatis; importar java.io.ioException; importar java.io.reader; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlsession; importação org.apache.ibatis.session.sqlSesstuário; org.apache.ibatis.session.sqlSessionFactoryBuilder; importar org.junit.be antes; importar org.junit.test; importar com.zf.mybatis.pojo.user; classe pública testmybatis {private sqlSessionFactory sqlsessFactory; leitor privado leitor; @EBE Antes public void init () {try {reader = Resources.getResourCeasReader ("mybatis-config.xml"); sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (leitor); } catch (ioexception e) {e.printStackTrace (); }} @Test public void testQueryUser () {SqlSession Session = sqlSessionFactory.opensssion (); tente {user user = (user) 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.opensssion (); tente {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", usuário); session.Commit (); System.out.printf ("UserID:%d, 总记录条数:%d", user.getId (), resultadoCount); // 获取插入对象的 id} finalmente {session.close (); }} @Test public void testUpDateUser () {SqlSession Session = sqlSessionFactory.opensssion (); tente {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", usuário); session.Commit (); System.out.printf ("修改条数:%d", updateCount); } finalmente {session.close (); }} @Test public void testDelete () {SqlSession Session = sqlSessionFactory.opensssion (); tente {// 返回值是删除条数 int deLeteCount = session.update ("com.zf.mybatis.pojo.usermapper.deletebyId", 4); session.Commit (); System.out.printf ("删除条数:%d", deletecount); } finalmente {session.close (); }}}运行 TestQueryUser 结果如下:
Xangai, Pudongsummer
到此 , 一个 mybatis 的 helloworld 类型的小程序就出来了。
PS : MyBaits 配置文件报错解决
MyBaits 的配置文件校验很诡异 , 节点的位置还有要求如下 , 会报错 ::
O conteúdo do tipo de elemento "Configuração" deve corresponder "(Propriedades?, Configurações?, TypeAliases?, TypeHandlers?, ObjectFactory?, ObjectWrapperFactory?, Plugins?, Ambientes?, Mappers?)". <? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtds"> <transactionManager type = "jdbc"/> <dataSource type = "pooled"> <propriedade name = "driver" value = "oracle.jdbc.driver.oracledriver"/> <names name = "url" Value = "jdbc: oracle: thin: @xx: 1521: xx"/> <nome da (> <weept = "JDBC: Oracle: thin: @xx: 1521: xx"/> <Nome = <nome da "/") value = "xxxx"/> </DataSource> </ambiente> </ambientes> <tytyeAliases> <typeAlias type = "com.ice.stat.online.model.eventflag" alias = "Eventflag"/> </typealias> <mappers> <pavper ("com/ice/states/stats/stats/online/online/stapings/stappers> </maperes> </figuration>
把 Typealiases 放到最上面就好了说:
<? xml versão = "1.0" coding = "utf-8"?> <! type = "com.ice.stat.online.model.eventflag" alias = "eventflag"/> </typeAliases> <ambientes default = "desenvolvimento"> <ambiente id = "desenvolvimento"> <transactionManager type = "jdbc"/> <datasource type = "pooled"> <propriedades = "driver" "" "/" reding "r. name = "url" value = "jdbc: oracle: thin: @xx: 1521: xx"/> <propriedade name = "nome de usuário" value = "iReport"/> <names name = "senha" value = "xxxx"/> </DataSource> </ambiental Resource = "COM/ICE/STAT/ONLINE/MODELO/HBM/EVENTFLAGMAPPER.XML"/> </MAPPERS> </figuration>