使用mybatis 操作数据库的实例程序

这里写图片描述

一、理解什么是mybatis


MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.

1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)
2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis与hibernate的对比?

mybatis提供一种“半自动化”的ORM实现。
这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
而mybatis的着力点,则在于POJO与SQL之间的映射关系(还不是很理解这里)。
二、简单例子(快速入门)


1)建立java web项目
这里我建立的是java web项目。其实建立简单的java 项目也是可以的,不一定非要用web项目。项目建立起来后,

这里写图片描述

2)导入jar包
这里需要导入两个jar包:导入mybatis-3.3.0.jar 和 ojdbc.jar。注意:导入之后需要build path ,将导入的包变为奶瓶状,如上图所示。

3)建立数据库
因为平时使用的数据库多为Oracle,这里也采用了Oracle数据库。建立了一个表:tb_person(里面还有id,name ,password),采用mybatis管理数据库实现对 tb_person 表的操作。

4)使用到的类和文件
程序中使用到的类:User.java ,Test.java 。使用到的XML文件为 User.xml , configuration.xml 。

5)程序源代码
User.java

package mybatis;

public class User {    
    private int id;    
    private String name;    
    private String password;    

    public User(){}    
    public User(int id, String name) {    
        this.id = id;    
        this.name = name;    
    }    

    public int getId() {    
        return this.id;    
    }    

    public void setId(int id) {    
        this.id = id;    
    }    

    public String getName() {    
        return this.name;    
    }    

    public void setName(String name) {    
        this.name = name;    
    }    

    public String getPassword() {    
        return this.password;    
    }    

    public void setPassword(String password) {    
        this.password = password;    
    }    

    @Override    
    public String toString() {    
        return "User [id=" + this.id + ", name=" + this.name + ", password=" + this.password + "]";    
    }    

}    

Test.java

package mybatis;

import java.io.IOException;    
import java.io.Reader;    
import java.util.List;    

import org.apache.ibatis.io.Resources;    
import org.apache.ibatis.session.SqlSession;    
import org.apache.ibatis.session.SqlSessionFactory;    
import org.apache.ibatis.session.SqlSessionFactoryBuilder;    

public class Test {    
    public static void main(String[] args) throws IOException {    
        String resource = "configuration.xml";    
       Reader reader = Resources.getResourceAsReader(resource);    
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);    
        SqlSession session = ssf.openSession();    
        try{    
            User user = session.selectOne("User.selectUser", 2);   

            System.out.println(user.getName());    
            System.out.println(user);    
            System.out.println("--------------分隔线---------------");    
            //怎么样保证取出来的只是想要查询的部分呢
            List<User> users = session.selectList("User.selectUsers");    
            for(int i=0; i<users.size(); i++) {    
                System.out.println(users.get(i));    
            }

            System.out.println("--------------分隔线---------------");   


        } catch (Exception e) {    
            e.printStackTrace();    
        } finally {    
            session.close();    
        }    
    }    
}    

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 alias="User" type="mybatis.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 name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />    
                <property name="username" value="*****" />    
                <property name="password" value="*****" />    
            </dataSource>    
        </environment>    
    </environments>    

    <mappers>    
        <mapper resource="mapper/User.xml"/>    

    </mappers>    

</configuration> 

User.xml
这里写的是sql语句

<?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="User">    
    <select id="selectUser" parameterType="int" resultType="User">    
        SELECT * FROM tb_person WHERE id = #{id}    
    </select>    

    <select id="selectUsers" resultType="User">    
        SELECT * FROM tb_person    
    </select>  



</mapper>  


三、注意事项

1. mybatis 查询返回为NULL
注意一个问题:实体类的字段名称应该和数据库里面的字段名称保持一致,否则查询出的结果返回全部为null。
2. session.selectOne() 返回的是单条查询语句
3. session.selectList(“User.selectUsers”) 返回的是一个List ,可以实现返回一个集合
4.configuration.xml 文件应该放在src的根目录下,否则会出现错误


初次学习mybatis ,难免会有错误的地方,希望能够和各位路过的大神们多多交流!!!

发布了40 篇原创文章 · 获赞 29 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章