Mybatis学习笔记

来源:互联网 发布:微信发淘宝优惠券软件 编辑:程序博客网 时间:2024/06/04 19:10

可以通过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>  

用来配置映射文件的路径。


0 0
原创粉丝点击