什么是mybatis
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.
orm工具的基本思想
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
2. 由sessionfactory 产生 session
3. 在session 中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session 。
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
若果非要比较上面两者的话,我总结的就是hibernate熟悉了开发速度快,省代码。
mybatis效率更快,容易上手。
(ps:我在网上学习的教程全 是mysql的教程,我是为了活学活用我就用了orcale)
首先 将 mybatis-3.2.0.jar,ojdbc6.jar 拷贝到 web工程的lib目录.
先介绍基本的文件搭建目录如下图所示
先介绍User.java 类,此类是所需要的bean。
代码如下:
package model; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private int id; private String userName; private String userAge; 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 static long getSerialversionuid() { return serialVersionUID; } @Override public String toString() { return "id:"+this.getId()+"|userName:"+this.getUserName()+"|userAge:"+this.getUserAge()+"|userAddress:"+this.getUserAddress(); } }
简单的bean,看着代码很多,但是无需多解释。仅仅修改了tostring方法,目的是为了检测。Serializable接口是序列化接口,网络传输必用
之后是UserMapper.java 这个接口、这个仅仅是一个接口!!!此接口的目的是对应接下来要介绍的UserMapper.xml文件。
你只需要在接口中定义号方法,mybatis会帮你去具体实现。
注意:
UserMapper 是一个接口,这个接口里面定义的方法的名字(name)和UserMapper.xml里面的mapper 标签中的 id一样。
UserMapper接口里面方法返回类型要和UserMapper.xml里mapper标签中resultSetMap是一个类型.
UserMapper这个接口的作用就是要你写一个Java类 类对应你的xml文件.方便调用.
下面是代码
package dao; import model.User; public interface UserMapper { public User getUserById(int id); }
下面是UserMapper.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 namespace="dao.UserMapper"> <select id="getUserById" parameterType="int" resultType="User"> select * from User01 where id = #{id} </select> </mapper>
对应关系之前我也说了。
还有就是
<mapper namespace=”” />,主要是跟他有关的三个地方,
第一个是Configuration.xml的mappers属性
第二个mapper接口如UserMapper 的接口路径
第三个是DAO程序中的session.getConfiguration().addMapper(UserMapper.class)
第三个是在执行时候会用到的一个语句,你可以先记下来。之后回头在看。
号到了布置追后一个xml文件的时候了。就是总配置文件Configuration.xml
代码如下
<?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> <typeAliases> <!-- simple alias for full class name --> <typeAlias alias="User" type="model.User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="system"/> <property name="password" value="zhou123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="dao/UserMapper.xml"/> </mappers> </configuration>
typeAlias 属性是给model起别名,
environments 标签是配置数据库的基本信息、
maopers 是加载之前的对应Mapper.xml文件 、
这样基本的数据库配置就完成了