zoukankan      html  css  js  c++  java
  • Mybatis

    简介:

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。(与hibernate的作用相同,都是与数据库进行交互,hibernate 可以反射生成实体类,mybatis不能)

    使用:

      1.导包

      导入mybatis的包:只有一个包

      另外需要的是jdbc的驱动包(这里是使用oracle):

      2.配置(在配置之前,在数据库中已经建好了一个user表 有三个字段 id,userName,password,并且实体类已经写好)

      在src下建立一个xml文件,名字没有限制

    配置的属性如下,也可去官网找(百度: 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测试用例

    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);
            }
        }
    }

    执行代码如下

    数据库中的数据:

  • 相关阅读:
    使用babel插件集
    使用babel
    webpack基本配置
    vue-router参数传递
    路由(二) router-link的使用
    路由使用(一)
    获取DOM
    父组件传递值给子组件(一)
    定义全局组件
    Windows下更改MySQL数据库的存储位置
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6736260.html
Copyright © 2011-2022 走看看