zoukankan      html  css  js  c++  java
  • MyBatis配置

    编写MyBatis配置文件(配置文件可以在上面下载的压缩包root下找到PDF,里面也有示例配置)

    Emp.xml

    复制代码
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="cn.happy.dao.EmpDao">
     6     <resultMap id="empMap" type="cn.happy.entity.Emp">
     7         <id property="empId" column="empNo"/>
     8         <result property="empName" column="ENAME"/>
     9         <result property="job"/>
    10         <result property="mgr"/>
    11         <result property="hiredate"/>
    12         <result property="sal"/>
    13         <result property="comm"/>
    14         <association property="dept" javaType="cn.happy.entity.Dept">
    15             <id property="deptNo"/>
    16             <result property="deptName" column="DNAME"/>
    17             <result property="loc"/>
    18         </association>
    19     </resultMap>
    20     
    21     <select id="getAllEmpInfo" resultMap="empMap">
    22         select * from Emp e,Dept d where e.deptno=d.deptno
    23     </select>
    24     
    25     <!-- <select id="countAll" resultType="int" > 
    26     select count(*) from Emp
    27     </select> -->
    28 </mapper>
    复制代码

    其中几个常用的元素的作用如下:( 1.environment   和   2.mappers元素)

    1.environment   元素:用于配置多个数据环境,这样可以映射多个数据库信息。采用default来指定默认使用哪个数据库环境。environment则是每个数据库环境的具体配置,

     包括数据连接信息和事务管理信息。

      在MyBatis中有两个事物管理器类型(即type="[JDBC|MANAGED]")

        JDBC:直接使用JDBC控制事务,它依赖于从数据库得到的连接来管理事务范围。

        MANAGED:MyBatis自己不负责控制事务,它会让容器来管理事务的整个生命周期(如通过Spring或javaEE应用服务器)

      数据源类型有三种:UNPOOLED、POOLED、JNDI。

      UNPOOLED:这个数据源的实现是每次被请求时简单打开和关闭连接,它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接。

      POOLED:采用连接池以避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前Web应用程序快速响应请求的很流行的方法。

      JNDI:这个数据源的实现是为了使用如Spring 或 应用服务器这类的容器。容器可以集中或在外部配置数据源,MyBatis通过JNDI获取数据源。

    2.mappers元素:  包含所有mapper的列表,告诉MyBatis到哪里去找SQL语句。mapper主要是定义SQL映射文件。

    03. 创建实体化类和数据库接口   (此处指演示Dept类。。字段比较少,好操作!)

    复制代码
    1 public class Dept {    
    2     private Integer deptNo;
    3 
    4     private String deptName;
    5 
    6     private String loc;
        (省略其他getter() and Setter()...) 7 }
    复制代码

    04.创建SQL映射文件(DeptMapper.xml   其中添加了对应数据库增删改查(模糊查询)的配置:非ResultMap)

    复制代码
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="cn.happy.dao.DeptDao">
     6 
     7 <select id="getAllDept" resultType="cn.happy.entity.Dept">
     8     select * from Dept
     9 </select>
    10 
    11 <insert id="addDept" parameterType="cn.happy.entity.Dept">
    12     insert into dept values(SEQ_NUM.Nextval,#{deptName},#{loc})
    13 </insert>
    14 
    15 <delete id="delDept" parameterType="cn.happy.entity.Dept">
    16     delete from dept where deptNo=#{deptNo}
    17 </delete>
    18 <update id="">
    19 
    20 </update>
    21 <select id="ilikeDept" parameterType="cn.happy.entity.Dept" resultType="cn.happy.entity.Dept">
    22     select * from Dept where dname like '%${dname}%'
    23 </select>
    24 </mapper>
    复制代码

     对应数据库增删改查(模糊查询)的简单操作:

    1 package cn.happy.test;
      2 
      3 import java.io.IOException;
      4 import java.io.InputStream;
      5 import java.util.List;
      6 
      7 import org.apache.ibatis.io.Resources;
      8 import org.apache.ibatis.session.SqlSession;
      9 import org.apache.ibatis.session.SqlSessionFactory;
     10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     11 import org.junit.Before;
     12 import org.junit.Test;
     13 
     14 import cn.happy.dao.DeptDao;
     15 import cn.happy.entity.Dept;
     16 import cn.happy.entity.Emp;
     17 
     18 public class Test3_MyBatis {
     19     SqlSession session ;
     20     @Before
     21     public void getInit() throws IOException{
     22         InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
     23         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
     24         session= sf.openSession();
     25     }
     26     
     27     /**
     28      * ilikeDept
     29      */
     30     @Test
     31     public void Test_ilikeDept(){
     32         Dept dept = new Dept();
     33         dept.setDname("务");
     34         List<Dept> list = session.selectList("ilikeDept",dept);
     35         for (Dept item : list) {
     36             System.out.println(item);
     37         }
     38         
     39         
     40     }
     41     
     42     
     43     /**
     44      * delDept
     45      */
     46     @Test
     47     public void Test_delDept(){
     48         int count = session.delete("delDept",63);
     49         session.commit();
     50         System.out.println(count);
     51     }
     52     
     53     /**
     54      * addDept
     55      */
     56     @Test
     57     public void Test_addDept(){
     58         Dept dept=new Dept();
     59         dept.setDname("行政");
     60         dept.setLoc("五道口");
     61         int count = session.insert("addDept",dept);
     62         session.commit();
     63         System.out.println(count+"	save ok!");
     64     }
     65     
     66     /**
     67      * resultMap
     68      */
     69     @Test
     70     public void Test_getAllEmpInfo(){
     71         List<Emp> list = session.selectList("getAllEmpInfo");
     72         for (Emp item : list) {
     73             System.out.println(item.getEmpName());
     74         }
     75     }
     76     
     77     /*
     78      * 条件查询
     79      */
     80     @Test
     81     public void Test03() throws IOException{
     82         
     83         //List<Dept> list = session.selectList("cn.happy.dao.DeptDao.getAllDept");
     84         DeptDao mapper = session.getMapper(DeptDao.class);
     85         List<Dept> list = mapper.getAllDept();
     86         
     87         for (Dept item : list) {
     88             System.out.println(item.getDeptNo());
     89         }
     90         //System.out.println(((Dept)obj).getDeptName());
     91     
     92     }
     93     
     94     
     95     
     96     /*
     97      * mybatis  查询员工表记录数
     98      */
     99     @Test
    100     public void Test02() throws IOException{
    101         InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
    102         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
    103         SqlSession session = sf.openSession();
    104         Object object = session.selectOne("cn.happy.dao.EmpDao.countAll");
    105         System.out.println(object);
    106         session.close();
    107     }
    108     
    109     
    110     @Test
    111     public void Test01() throws IOException {
    112            String resource = "mybatis-config.xml";
    113            InputStream inputStream = Resources.getResourceAsStream(resource);
    114            //获得会话工厂
    115            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
    116            //会话
    117            SqlSession session = sf.openSession();
    118            //通过命名空间唯一锁定要执行的sql
    119            Dept dept = (Dept)session.selectOne("cn.happy.entity.Dept.selectDeptByNo", "63");
    120            System.out.println(dept);
    121            session.close();
    122     }
    123 
    124 }
  • 相关阅读:
    第一篇博文
    重拾javascript系列-JS声明详解之var
    重拾Javascript系列
    AtCoder DP Contest 26题
    DP题
    一众数论
    字符编码
    C# DateTime类型和sqlserver DateTime精度不同
    vs2015中的数据库架构对比工具(New Schema Comparison)
    SqlServer常用语句
  • 原文地址:https://www.cnblogs.com/fangyan-fight2015/p/6189429.html
Copyright © 2011-2022 走看看