可以通过http://mybatis.github.io/ 下载最新版本的mybatis,mybatis的项目托管在github的服务器上。
个人理解的MyBatis流程是,通过映射调用相应sqlmapper.xml里的SQL语句,返回相应的数据,或者执行相应的操作。sqlmapper.xml里的id要跟接口方法名保持一致。其他的后台处理交给框架来实现就可以。
通过MyEclipse新建一个java项目,建立如下的目录结构(目录结构有点随意.....因为测试,没有完全按照标准来。)
数据库使用的是Oracle,实现了对表中数据的插入以及查询。
config文件夹下存放的是User实体类
dao 文件夹下存放的是映射接口UserMapper
Mybatis文件夹下存放的是配置文件。
引入下载的jar包,以及连接数据库的jdbc jar 包,如果安装了oracle数据库,可以直接在oracle安装目录的jdbc文件夹下lib目录下找到连库的jar包。
User.java
package com.batis.config;
public class User {
public User() {
}
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserMapper.java
package com.batis.dao;
import com.batis.config.*;;
public interface UserMapper {
public User findById(String Id);
public void insertById(User us);
}
MyBitsTest.java
package com.batis.test;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.batis.dao.UserMapper;
import com.batis.config.User;
/**
* myBatis数据库连接测试
*
* @author db2admin
*
*/
public class MybatisTest {
/**
* 获得MyBatis SqlSessionFactory
* SqlSessionFactory负责创建SqlSession,一旦创建成功,就可以用SqlSession实例来执行映射语句,commit,rollback,close等方法。
* @return
*/
private static SqlSessionFactory getSessionFactory() {
SqlSessionFactory sessionFactory = null;
String resource = "configuration.xml";
try {
sessionFactory = new SqlSessionFactoryBuilder().build(Resources
.getResourceAsReader(resource));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sessionFactory;
}
public static void main(String[] args) {
SqlSession sqlSession = getSessionFactory().openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findById("SEX");
User us=new User();
us.setName("三");
us.setUsername("sss");
userMapper.insertById(us);
sqlSession.commit();
sqlSession.close();
System.out.println(user.getName());
System.out.println(user.getUsername());
}
}
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">
<!--这块等于dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.batis.dao.UserMapper">
<!-- findById必须和接口中的方法名一样 返回一个User 就是刚才的别名 如果不弄别名要连类路径一起写 麻烦-->
<select id="findById" parameterType="HashMap" resultType="User">
select
FIELD as username,FIELDNAME as name from EACODE where FIELD=#{id}
</select>
<insert id="insertById" parameterType="com.batis.config.User">
insert into TEST_USER(NAME,USERNAME) values(#{name},#{username})
</insert>
</mapper>
namespace必须指定实现dao的接口 id跟接口中的方法名一样。
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>
<typeAlias type="com.batis.config.User" alias="User"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"></property>
<property name="username" value="g4"></property>
<property name="password" value="g4"></property>
</dataSource>
</environment>
</environments>
<mappers>
<!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 -->
<mapper resource="Mybatis/userMapper.xml" />
</mappers>
</configuration>
需要注意的几点:
<typeAliases>
<typeAlias type="com.batis.config.User" alias="User"></typeAlias>
</typeAliases>
typeAliases标签的作用,类似于声明了对象,以后可以在配置中或者在sqlmap中直接使用User来代替User类
environments default="development">
<environment id="development">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"></property>
<property name="username" value="g4"></property>
<property name="password" value="g4"></property>
</dataSource>
</environment>
</environments>
设置环境为development (开发模式)transactionManager 类型为jdbc dataSource 类型为 POOLED(连接池) Mybatis内置了三种数据源类型
UNPOOLED:每次请求得时候建立连接,比较慢
POOLED:建立连接池的方式
JNDI:个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
<mappers>
<!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 -->
<mapper resource="Mybatis/userMapper.xml" />
</mappers>
用来配置映射文件的路径。