Mybatis入门

1,本文采用的Mybatis框架版本为:mybatis-3.2.7.jar

官方网址为:

https://github.com/mybatis/mybatis-3/releases

2,数据库相关,驱动:ojdbc6-11.2.0.jar

脚本:

-- Create table
create table VINCENT_USER
(
  NAME VARCHAR2(100),
  AGE  NUMBER(10)
)
tablespace HKGL_DATA
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );



3, 以持久化一个简单的User bean为例 
User实体类的代码如下: 

 

package bean;

public class User {   
    private String name;   
    private Integer age;   
   
    public String getName() {   
       return name;   
    }   
    public void setName(String name) {   
       this.name = name;   
    }   
    public Integer getAge() {   
       return age;   
    }   
    public void setAge(Integer age) {   
       this.age = age;   
    }   
    public User(String name) {   
        super();   
        this.name = name;   
     }   
    public User(String name, Integer age) {   
       super();   
       this.name = name;   
       this.age = age;   
    }   
   
    public User() {   
       super();   
    }  //必须要有这个无参构造方法,不然根据UserMapper.xml中的配置,在查询数据库时,将不能反射构造出User实例   
}  


User实体的映射器取名为UserMapper(接口),其代码如下 

package Mapper;   
import bean.User;   
   
public interface UserMapper {   
    public void insertUser(User user);   
    public User getUser(String name);   
} 


注意,该接口类似于Hibernate中的DAO层接口,唯一不同的是,MyBatis中,只声明该接口就可以,不需要去实现. 
UserMapper映射器对应的配置文件如下(相当于Hibernate中的User.hbm.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="Mapper.UserMapper">   
<!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry”-->   
    <insert id="insertUser" parameterType="User">   
       insert into vincent_user(name,age) values(#{name},#{age})   
       <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->   
    </insert>   
   
    <!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->   
    <select id="getUser" resultType="User" parameterType="java.lang.String">   
        select * from vincent_user where name=#{name}   
    </select>   
</mapper>  


 

MyBatis的配置文件这里取名为mybatis-config.xml其配置代码如下(相当与Hibernate的hibernate.cfg.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>   
    <settings>   
        <!-- changes from the defaults for testing -->   
        <setting name="cacheEnabled" value="false" />   
        <setting name="useGeneratedKeys" value="true" />   
        <setting name="defaultExecutorType" value="REUSE" />   
    </settings>   
    <typeAliases>   
       <typeAlias alias="User" type="bean.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:@127.0.0.1:1521:test"/>   
              <property name="username" value="hkgl"/>   
              <property name="password" value="hkgl123"/>   
           </dataSource>   
       </environment>   
    </environments>   
    <mappers>   
        <mapper resource="resource/UserMapper.xml" />   
    </mappers>   
</configuration>  


 

加载配置文件得到sqlSessionFactory的工具类 

package Util;   
   
import java.io.IOException;   
import java.io.Reader;   
   
import org.apache.ibatis.io.Resources;   
import org.apache.ibatis.session.SqlSessionFactory;   
import org.apache.ibatis.session.SqlSessionFactoryBuilder;   
   
public class MyBatisUtil  {   
    private  final static SqlSessionFactory sqlSessionFactory;   
    static {   
       String resource = "resource/mybatis-config.xml";   
       Reader reader = null;   
       try {   
           reader = Resources.getResourceAsReader(resource);   
       } catch (IOException e) {   
           System.out.println(e.getMessage());   
   
       }   
       sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);   
    }   
   
    public static SqlSessionFactory getSqlSessionFactory() {   
       return sqlSessionFactory;   
    }   
}  


 

测试代码如下: 

package TestMapper;   
import org.apache.ibatis.session.SqlSession;   
import org.apache.ibatis.session.SqlSessionFactory;   
import org.junit.Test;   

import bean.User;

import Mapper.UserMapper;
import Util.MyBatisUtil;
   
public class TestMapper {   
    static SqlSessionFactory sqlSessionFactory = null;   
    static {   
       sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();   
    }   
   
  @Test   
    public void testAdd() {   
       SqlSession sqlSession = sqlSessionFactory.openSession();   
       try {   
           UserMapper userMapper = sqlSession.getMapper(UserMapper.class);   
           User user = new User("tom",new Integer(5));   
           userMapper.insertUser(user);   
           sqlSession.commit();//这里一定要提交,不然数据进不去数据库中   
       } finally {   
           sqlSession.close();   
       }   
    }   
   
    @Test   
    public void getUser() {   
       SqlSession sqlSession = sqlSessionFactory.openSession();   
       try {   
           UserMapper userMapper = sqlSession.getMapper(UserMapper.class);   
           User user = userMapper.getUser("jun");   
           System.out.println("name: "+user.getName()+"|age: "+user.getAge());   
       } finally {   
           sqlSession.close();   
       }   
    }   
   
}  


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值