初级mybatis教程

jopen 11年前

第一步: 

添加相应的jar 去吧http://code.google.com/p/mybatis/ 下载 MyBatis Core Framework



myeclipse  创建 mybatis web 项目 添加相应的包

 初级mybatis教程

下面我一数据库表student 为例 进行项目的搭建

   初级mybatis教程

 初级mybatis教程


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 文件

                                                       初级mybatis教程
<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();
        }
        
    }

}