什么是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文件 、
这样基本的数据库配置就完成了