zoukankan      html  css  js  c++  java
  • mybatis 基本配置

    一、mybatis是什么
    mybatis是一种orm的持久化层技术。orm 对象关系映射mybatis就是完成对象和表之间映射关系的持久层框架。
    二、mybatis实现数据库查询
      举例:利用mybatis完成部门表的查询
      第一步,创建web项目,引入mybatis依赖的jar包。(不要忘了引入数据库驱动包这里用oracle示例)
      第二步,创建mybatis的主配置文件 
      可以在src下创建mybatis的主配置文件idea是没有mybatis主配置文件的模板文件的,
      我们可以创建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"
    >
     创建好之后,右键菜单中就会出现该名称的模板文件选项:
      有了这个选项之后,我们就可以创建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的运行环境 mybatis可以连接多个数据库 ,连接一个数据库的信息就是一个运行环境 default指定默认使用哪个运行环境 --> <environments default="myOracleEnv"> <!--连接oracle的环境--> <environment id="myOracleEnv"> <!--配置mybatis的事物管理器 JDBC 使用mybatis自己的事物管理方式,就是使用jdbc的事物管理方式 MANAGED 使用容器的事物管理方式 --> <transactionManager type="JDBC"></transactionManager> <!--配置mybatis连接oracle的连接池信息 POOLED 使用连接池的方式获取数据库连接 UNPOOLD 不使用连接池的方式获取数据库连接 --><dataSource type="POOLED"> <!--数据库的驱动--> <property name="driver" value="oracle.jdbc.driver.OracleDriver"></property> <!-- 数据库连接的url--> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property> <!--数据库连接的用户名--> <property name="username" value="scott"></property> <!-- 数据库连接的密码--> <property name="password" value="tiger"></property> </dataSource> </environment> </environments> </configuration>
    主配置文件创建好之后如上所示
    第三步,创建mybatis的工厂类工具,用来获取mybatis的SqlSession对象
           以后我们做数据库操作都是通过SqlSession来进行的,所以我们可以写一个工厂类帮助工具,用来获取这个
    SqlSession对象。
    package com.aaa.mybatis.util;
    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 java.io.IOException;
    import java.io.Reader;
     /**
    * 获取SqlSession对象工具类
    */
    public class SqlSessionFactoryUtil { 
         //获取SqlSession的工厂类对象
            private static SqlSessionFactory sessionFactory; 
         //静态代码块,在类加载的时候会自动执行该内容 
          static{
            Reader reader =null; 
                try {
                      //获取Reader对象,读取mybatis的主配置文件 
                   reader = Resources.getResourceAsReader("mybatis.xml"); 
                  //利用SqlSessionFactoryBuilder创建工厂类对象 
                sessionFactory = new SqlSessionFactoryBuilder().build(reader); 
                 } catch (IOException e) {
                                   e.printStackTrace();
                             }finally{ 
                                       try { 
                                             reader.close(); 
                                        } catch (IOException e) { 
                                             e.printStackTrace(); 
                              } 
                       }
          }    
    
    
    /**
    * 提供给用户调用的获取SqlSession的方法
    * @return
    */
    public static SqlSession getSession(){
       
    return sessionFactory.openSession();
    }
    }
    第四步,创建实体类
    创建实体类Dept.java:
    package com.aaa.entity;
    
    import java.util.List;
    
    public class Dept {
        private int deptno;
        private String dname;
        private String loc;
        private List<Emp> emp;
    
        public List<Emp> getEmp() {
            return emp;
        }
    
        public void setEmp(List<Emp> emp) {
            this.emp = emp;
        }
    
        public int getDeptno() {
            return deptno;
        }
    
        public void setDeptno(int deptno) {
            this.deptno = deptno;
        }
    
        public String getDname() {
            return dname;
        }
    
        public void setDname(String dname) {
            this.dname = dname;
        }
    
        public String getLoc() {
            return loc;
        }
    
        public void setLoc(String loc) {
            this.loc = loc;
        }
    }
    第五步,创建dao接口
    package com.aaa.dao;
    
    import com.aaa.entity.Dept;
    
    /**
     * 部门管理到接口
     */
    public interface DeptDao {
        /**
         * 根据部门编号查询部门信息
         * @param deptno
         * @return
         */
        public Dept selectOneDept(int deptno);
    }
    第六步,创建dao接口的实现的mapper文件
    这里我们不需要再用类的方式实现dao接口,我们用mapper文件也就是映射文件来实现dao接口中的方式。使用映射文件,首先应该创建映射文件,映射文件是一个xml格式的文件,所以我们一般也会先创建一个模板,创建模板文件和刚才创建mybatis主配置文件的模板文件步骤是一样的。
     
    模板创建好之后,就可以根据模板创建映射文件了,我们一般把映射文件创建到dao接口的目录下面,名字一般叫
    dao接口名称+Mapper.xml, DeptDaoMapper.xml:
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.aaa.dao.DeptDao">
        <resultMap id="deptMap" type="com.aaa.entity.Dept">
            <id column="deptno" property="deptno"></id>
            <result column="dname" property="dname"></result>
            <result column="loc" property="loc"></result>
    
            <collection property="emp" ofType="com.aaa.entity.Emp" autoMapping="true"></collection>
        </resultMap>
        <select id="selectOneDept" resultMap="deptMap">
            SELECT * FROM dept d INNER JOIN emp e on e.deptno=d.deptno WHERE d.deptno=#{deptno}
        </select>
    
    </mapper>
    第七步,把mapper文件加载到mybatis的主配置文件中
    第八步,创建测试类
    package com.aaa.test;
    
    import com.aaa.dao.DeptDao;
    import com.aaa.dao.EmpDao;
    import com.aaa.entity.Dept;
    import com.aaa.entity.Emp;
    import com.aaa.util.SqlSessonFacttoryUtil;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.List;
    
    public class DeptTest {
        @Test
        public void sumDeptEmp3(){
            SqlSession session = SqlSessonFacttoryUtil.getSession();
            DeptDao deptDao = session.getMapper(DeptDao.class);
            Dept dept = deptDao.selectOneDept(20);
            System.out.println(dept.getDname());
            List<Emp> emp = dept.getEmp();
            for (Emp e:emp){
                System.out.print("员工姓名:"+e.getEname());
                System.out.print("员工编号:"+e.getEmpno());
                System.out.println("员工工资:"+e.getSal());
            }
    
            session.close();
        }
    }

    增删改查在mybatis中都有对应的标签 

    查询<select></select>

    添加<insert></insert>

    修改<update></update>

    删除<delete></delete>

  • 相关阅读:
    hdu 5646 DZY Loves Partition
    bzoj 1001 狼抓兔子 平面图最小割
    poj 1815 Friendship 最小割 拆点 输出字典序
    spoj 1693 Coconuts 最小割 二者取其一式
    hdu 5643 King's Game 约瑟夫环变形
    约瑟夫环问题
    hdu 5642 King's Order
    CodeForces 631C Report
    1039: C语言程序设计教程(第三版)课后习题9.4
    1043: C语言程序设计教程(第三版)课后习题10.1
  • 原文地址:https://www.cnblogs.com/yanyunpiaomaio/p/11160228.html
Copyright © 2011-2022 走看看