注:  此文中的实体类还是沿用上一章的Emp和Dept两个类

01.引入需要的jar包文件:http://pan.baidu.com/s/1qYy9nUc  :mybatis-3.2.2.jar

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

Emp.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="cn.happy.dao.EmpDao">
<resultMap id="empMap" type="cn.happy.entity.Emp">
<id property="empId" column="empNo"/>
<result property="empName" column="ENAME"/>
<result property="job"/>
<result property="mgr"/>
<result property="hiredate"/>
<result property="sal"/>
<result property="comm"/>
<association property="dept" javaType="cn.happy.entity.Dept">
<id property="deptNo"/>
<result property="deptName" column="DNAME"/>
<result property="loc"/>
</association>
</resultMap> <select id="getAllEmpInfo" resultMap="empMap">
select * from Emp e,Dept d where e.deptno=d.deptno
</select> <!-- <select id="countAll" resultType="int" >
select count(*) from Emp
</select> -->
</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类。。字段比较少,好操作!)

 public class Dept {
private Integer deptNo; private String deptName; private String loc;
    (省略其他getter() and Setter()...)
}

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

 <?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="cn.happy.dao.DeptDao"> <select id="getAllDept" resultType="cn.happy.entity.Dept">
select * from Dept
</select> <insert id="addDept" parameterType="cn.happy.entity.Dept">
insert into dept values(SEQ_NUM.Nextval,#{deptName},#{loc})
</insert> <delete id="delDept" parameterType="cn.happy.entity.Dept">
delete from dept where deptNo=#{deptNo}
</delete>
<update id=""> </update>
<select id="ilikeDept" parameterType="cn.happy.entity.Dept" resultType="cn.happy.entity.Dept">
select * from Dept where dname like '%${dname}%'
</select>
</mapper>

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

 package cn.happy.test;

 import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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 org.junit.Before;
import org.junit.Test; import cn.happy.dao.DeptDao;
import cn.happy.entity.Dept;
import cn.happy.entity.Emp; public class Test3_MyBatis {
SqlSession session ;
@Before
public void getInit() throws IOException{
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
session= sf.openSession();
} /**
* ilikeDept
*/
@Test
public void Test_ilikeDept(){
Dept dept = new Dept();
dept.setDname("务");
List<Dept> list = session.selectList("ilikeDept",dept);
for (Dept item : list) {
System.out.println(item);
} } /**
* delDept
*/
@Test
public void Test_delDept(){
int count = session.delete("delDept",);
session.commit();
System.out.println(count);
} /**
* addDept
*/
@Test
public void Test_addDept(){
Dept dept=new Dept();
dept.setDname("行政");
dept.setLoc("五道口");
int count = session.insert("addDept",dept);
session.commit();
System.out.println(count+"\tsave ok!");
} /**
* resultMap
*/
@Test
public void Test_getAllEmpInfo(){
List<Emp> list = session.selectList("getAllEmpInfo");
for (Emp item : list) {
System.out.println(item.getEmpName());
}
} /*
* 条件查询
*/
@Test
public void Test03() throws IOException{ //List<Dept> list = session.selectList("cn.happy.dao.DeptDao.getAllDept");
DeptDao mapper = session.getMapper(DeptDao.class);
List<Dept> list = mapper.getAllDept(); for (Dept item : list) {
System.out.println(item.getDeptNo());
}
//System.out.println(((Dept)obj).getDeptName()); } /*
* mybatis 查询员工表记录数
*/
@Test
public void Test02() throws IOException{
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
SqlSession session = sf.openSession();
Object object = session.selectOne("cn.happy.dao.EmpDao.countAll");
System.out.println(object);
session.close();
} @Test
public void Test01() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//获得会话工厂
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
//会话
SqlSession session = sf.openSession();
//通过命名空间唯一锁定要执行的sql
Dept dept = (Dept)session.selectOne("cn.happy.entity.Dept.selectDeptByNo", "");
System.out.println(dept);
session.close();
} }

Test Code

clazz。

MaBatis配置(单配置 之一)的更多相关文章

  1. BootStrap 智能表单系列 八 表单配置json详解

    本章属于该系列的高级部分,将介绍表单中一些列的配置 1.config列的配置: 主要用于控制布局 :config:{autoLayout:true|'1,2,2,4'} true:根据配置项最里层的数 ...

  2. 【JEECG技术文档】表单配置-树形表单

    表单配置支持树型表单了,具体效果如下图: 配置说明: 1.是否树:选择是. 2.树形表单父Id:表的自关联外键. 3.树形表单列表:显示树形图标的列,如上图中为[组织机构名称]. 4.默认值:最外层数 ...

  3. 【JEECG技术博文】JEECG表单配置-树形表单

    表单配置支持树型表单了,详细效果例如以下图:

  4. Nginx 核心配置-单节点实现多域名访问

    Nginx 核心配置-单节点实现多域名访问 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验环境说明 1>.虚拟机环境说明 [root@node101.yinzheng ...

  5. 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: ...

  6. SpringMVC之五:自定义DispatcherServlet配置及配置额外的 servlets 和 filters

    相关文章 <Servlet3.0之四:动态注册和Servlet容器初始化> <SpringBoot中通过SpringBootServletInitializer如何实现组件加载> ...

  7. nginx 反向代理 与 Apache backend的配置联合配置

    nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1.  设置域名, 子域名映射到指定服务器ip ...

  8. nginx配置(windows配置)

    以下是我的项目用到的一份配置文件#user  nobody;worker_processes  4; #进程数,一般cpu是几核就写多少#error_log  logs/error.log;#erro ...

  9. Nginx负载均衡配置简单配置方法

    http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...

  10. java操作redis集群配置[可配置密码]和工具类(比较好用)

    转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>red ...

随机推荐

  1. [luoguP1736] 创意吃鱼法(DP)

    传送门 f[i][j][0] 表示从右下角到左上角,以(i,j)为起点能延伸的最大值 f[i][j][1] 表示从左下角到右上角,以(i,j)为起点能延伸的最大值 up[i][j] 表示(i,j)上面 ...

  2. Oracle操作管理之用户和角色

    1.用户管理 (1)建立用户(数据库验证) CREATE USER smith IDENTIFIED BY smith_pwd DEFAULTTABLESPACE users TEMPORARY TA ...

  3. 关于 Neo4j 属性个数的限制

    关于 Neo4j 属性个数的限制 目前累积统计它有34.4亿个节点,344亿的关系,和6870亿条属性. 社区版,Neo4j对 数据库内 节点.关系 上的属性名个数是有限制的.数据库中至多存在687亿 ...

  4. 文化之旅 2012年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超 ...

  5. codevs1213 解的个数

    题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c = 0 p<=x<=q r<=y<=s 求满足这些条件的x,y的个数. 输入描述 Input ...

  6. 线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对照

    我们在用pthread创建线程时,能够指定调度策略policy--SCHED_OTHER(默认).SCHED_RR和SCHED_FIFO.这里TALK一下两个实时策略--SCHED_RR和SCHED_ ...

  7. 数据库学习之简单的SQL语句

    1.数据库的结构 1.1数据库 不同数据库叫做Catalog(在有的 DBMS 中也称为 Database,即数据库) .採用多 Catalog 以后能够给我们带 来例如以下优点: 便于对各个 Cat ...

  8. MAC Wireshark抓包IOS

    网络抓包是个基础技能,对于网络协议的掌握有一定的要求.iOS上实现网络抓包可以用Charles(针对http和https),tcpdump(快速分析网络包),和Wireshare.之前写过一篇介绍tc ...

  9. HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求。

    HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求. 2018-04-20 14:00 by 码农小周, 21 阅读, 2 评论, 收藏, 编辑 ...

  10. 数据结构之中序遍历转兴许遍历(JAVA实现)(二)

    算法流程: 主要分为四步: 1.当前字符为数字或者字母,则直接输出 2.当前字符为).则在栈中匹配输出.一直匹配到),则停止输出(就是将)及其顶上的元素所有弹出来输出) 3.当前字符为操作符.则比較当 ...