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>

  • 相关阅读:
    1.5 RPM红帽软件包1.6 Yum软件仓库
    Linux如何查找大文件或目录总结
    1.4 重置root用户密码
    Chrome 红色和 Chromium蓝色 区别:logoChrome 红色和 Chromium蓝色;Chrome闭源和 Chromium开源;
    【Android架构GPS篇】之定位数据怎样从GPS芯片到应用层
    ArcGIS教程:生成特征文件、类和聚类分析
    MiniGUI + Hi3531 笔记 .
    swift手记-2
    java桌面程序中使用联动菜单遇到与解决的问题
    &lt;div+css页面布局课堂笔记&gt;11---页面布局站点首页设计实例__终极版(仿csdn首页)
  • 原文地址:https://www.cnblogs.com/yanyunpiaomaio/p/11160228.html
Copyright © 2011-2022 走看看