初级mybatis教程
第一步:
添加相应的jar 去吧http://code.google.com/p/mybatis/ 下载 MyBatis Core Framework
在myeclipse 创建 mybatis web 项目 添加相应的包
下面我一数据库表student 为例 进行项目的搭建
1编写 StudentS实体类
package cn.kuvi.demo;
public class Student {
private int id;
private String name;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Student() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
public Student(int id, String name, String email) {
super();
this.id = id;
this.name = name;
this.email = email;
}
}
2 编写
package cn.kuvi.demo;
//创建接口 编写相应的方法使用IBATIS 不需要写相应的实现方法
相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半
自动化”的ORM实现。 纵观目前主流的ORM,无论Hibernate 还是
Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全
套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执 行。 ---- 摘自官方资料的一段话
总结:ibatis是一种半自动化的ORM, 需要手工编写sql ;hibernate不需要手工编写sql。
//2、 优点
⑴、iBATIS被广泛认为是最简单的一种持久化框架。
sql可以写在xml中,结构清晰,灵活配置。
⑵、文件归类,select 后的字须定义到标签中,可以实现部分代码复用。
⑶、执行sql后,返回的结果集自动封装。类似以下代码,均可省略。
public interface StudentDao {
Student getstudent(int id);
void save(Student student);
}
3配置config.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" > 注意使用添加dtd 文件
<configuration>
<properties resource="jdbc.properties">
</properties>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/kuvi/demo/StudentMapper.xml" />
</mappers>
</configuration>
4.配置映射文件mapper
<?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="cn.kuvi.demo.StudentDao">
<select id="getstudent" parameterType="int" resultType="cn.kuvi.demo.Student">一定要写全路径
select name,address as email from person where id=#{id}
</select>
</mapper>
测试类
package test;
import java.io.IOException;
import java.io.Reader;
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 cn.kuvi.demo.Student;
import cn.kuvi.demo.StudentDao;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String resource = "cn/kuvi/demo/StudentConfig.xml";
Reader reader;
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
StudentDao studentDao =sqlSession.getMapper(StudentDao.class);
Student st = studentDao.getstudent(1);
System.out.println(st.getName() +" "+ st.getEmail());
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}