MyBatis配置

Posted fyfighting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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+"\\tsave 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 }

 

以上是关于MyBatis配置的主要内容,如果未能解决你的问题,请参考以下文章

markdown [mybatis参考]关于mybatis #mybatis的一些片段

Mybatis——Dao层实现映射文件深入核心配置文件深入

mybatis学习(39):动态sql片段

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

Mybatis 系列2

mybatis动态sql片段与分页,排序,传参的使用