MyBatisMybatis

简介:

MyBatis 是支撑定制化
SQL、存储进度以及高档映射的出色的持久层框架。MyBatis 幸免了大约所有的
JDBC 代码和手动设置参数以及取得结果集。MyBatis
能够对布署和原生Map使用简便的 XML 或讲明,将接口和 Java 的 POJOs(Plain
Old Java Objects,普通的
Java对象)映射成数据库中的记录。(与hibernate的法力一样,都是与数据库进行相互,hibernate
可以反射生成实体类,mybatis不能)

 

使用:

  1.导包

  导入mybatis的包:唯有一个包MyBatis 1

  其余需求的是jdbc的驱动包(那里是接纳oracle):MyBatis 2

  2.安插(在布置以前,在数据库中一度建好了一个user表 有多个字段
id,userName,password,并且实体类已经写好)

  在src下成立一个xml文件,名字没有界定MyBatis 3

配置的性质如下,也可去官网找(百度: mybatis)

<?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>
    <!-- mybatis配置环境(复数)   default为哪个  就执行哪个-->
    <environments default="test1">
            <!-- mybatis环境 -->
            <environment id="test1">
                <!-- mybatis支持的事务  
                    JDBC 数据源自己的事务管理
                    MANAGE   托管(不支持tomcat  一般用在大型商业服务器,        weblogic ,jboss)    -->
                <transactionManager type="JDBC"></transactionManager>

                    <!-- 数据源     type的属性:POOLED ,UNPOOLED, JNDI -->
                    <!--POOLED:使用连接池 可以联想成c3p0 
                        UNPOOLED:不使用连接池  可以联想成jdbc的链接方式
                        JNDI:使用应用服务器的数据源链接(不常用)
                      -->
                <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>    <!-- Oracle数据库的驱动 -->
                    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>    <!-- Oracle数据库的jdbc协议 -->
                    <property name="username" value="zhao"/>
                    <property name="password" value="123"/>
                </dataSource>
            </environment>
    </environments>

    <!-- 每个实体类对应的配置文件映射 -->
    <mappers>
        <mapper resource="com/maya/dao/TUserMapper.xml"/>
    </mappers>

</configuration>

3.起家一个util包,在util包下建立(SessionFactory)

MybatisUtil类

 

package com.maya.util;

import java.io.IOException;
import java.io.InputStream;
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;

public class MybatisUtil {

    private static SqlSessionFactory SessionFactory;        //与hibernate的sessionfactory很相像
    private static SqlSession sqlsession;

    public static SqlSession getSqlSession(){
        //用流的方式
        InputStream in=null;
        //第二种方式
        Reader reader=null;
        try {
            in=Resources.getResourceAsStream("mybatis.xml");    //读取配置文件
            SessionFactory=new SqlSessionFactoryBuilder().build(in);
            //第二种方法
            //reader=Resources.getResourceAsReader("mybatis.xml");
            //SessionFactory=new SqlSessionFactoryBuilder().build(reader);
            sqlsession=SessionFactory.openSession();
            in.close();
        } catch (IOException e) {

            e.printStackTrace();
        }

        return sqlsession;

    }
}

 

总部署文件配置完结,接下去配置每一种实体类对应的计划文件,有两种办法:

  1.直接选用安插文件映射实体类(优缺点: 不须求写接口,不佳维护)

  2.运用接口

1.xml布局文件的措施:建立dao包,在该包下树立一个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">


<mapper namespace="com.maya.dao.TUserMapper"><!-- 一般的命名规则,包名开始,到对应的配置文件结束 -->
    <!-- 查询集合 -->
    <select id="List" resultType="com.maya.model.TUser" > 
        <!-- parameterType 参数类型(String.int.等等) resultType返回类型  parameterMap-->
    select * from t_user <!-- sql语句 这里是我们自己来写 -->
    </select>
</mapper>

 

 

确立一个JUint测试用例

MyBatis 4

 

 

 

package com.maya.util;

import static org.junit.Assert.*;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.maya.model.TUser;

public class JTest {

    private SqlSession ss;

    @Before
    public void setUp() throws Exception {
        //执行时自动先执行该方法
        ss=MybatisUtil.getSqlSession();
    }

    @After
    public void tearDown() throws Exception {
        //执行完test之后自动执行该语句
        ss.commit();
        ss.close();
    }

    @Test
    public void test() {
        List<TUser> list=ss.selectList("com.maya.dao.TUserMapper.List");
        for(TUser us:list){
            System.out.println(us);
        }
    }
}

实施代码如下

MyBatis 5

数据库中的数据:

MyBatis 6

 

网站地图xml地图