MaBatis配置(单配置 之一)
注: 此文中的实体类还是沿用上一章的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配置(单配置 之一)的更多相关文章
- BootStrap 智能表单系列 八 表单配置json详解
本章属于该系列的高级部分,将介绍表单中一些列的配置 1.config列的配置: 主要用于控制布局 :config:{autoLayout:true|'1,2,2,4'} true:根据配置项最里层的数 ...
- 【JEECG技术文档】表单配置-树形表单
表单配置支持树型表单了,具体效果如下图: 配置说明: 1.是否树:选择是. 2.树形表单父Id:表的自关联外键. 3.树形表单列表:显示树形图标的列,如上图中为[组织机构名称]. 4.默认值:最外层数 ...
- 【JEECG技术博文】JEECG表单配置-树形表单
表单配置支持树型表单了,详细效果例如以下图:
- Nginx 核心配置-单节点实现多域名访问
Nginx 核心配置-单节点实现多域名访问 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验环境说明 1>.虚拟机环境说明 [root@node101.yinzheng ...
- 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置
注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: ...
- SpringMVC之五:自定义DispatcherServlet配置及配置额外的 servlets 和 filters
相关文章 <Servlet3.0之四:动态注册和Servlet容器初始化> <SpringBoot中通过SpringBootServletInitializer如何实现组件加载> ...
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
- nginx配置(windows配置)
以下是我的项目用到的一份配置文件#user nobody;worker_processes 4; #进程数,一般cpu是几核就写多少#error_log logs/error.log;#erro ...
- Nginx负载均衡配置简单配置方法
http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
随机推荐
- BNUOJ 1260 Brackets Sequence
Brackets Sequence Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Origi ...
- Leetcode 114.二叉树展开为链表
二叉树展开为链表 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 将其展开为: class Solution{ public: void flatten(TreeNode* root){ if ...
- Why does MySQL produce so many temporary MYD files?
http://dba.stackexchange.com/questions/30505/why-does-mysql-produce-so-many-temporary-myd-files Data ...
- POJ2528 Uva10587 Mayor's posters
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...
- git常见操作---由简入深
常用命令 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p( ...
- Bellman_ford 算法 Currency Exchange POJ1860
Bellman_ford算法用于寻找正环或者负环! 算法导论: 24.1 The Bellman-Ford algorithm The Bellman-Ford algorithm solves th ...
- Swift具体解释之六----------------枚举、结构体、类
枚举.结构体.类 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正,一起学习. 1.枚举 枚举是用来定义一组通用类型的一组相关值 ,关键字enum ...
- 新浪微博开放平台之OAuth2.0认证
1.先到开放平台创建一个移动应用.获得key和secret,接着到"应用信息"里面填写授权回调页的网址,该网址能够随意,可是必须是能訪问的. 2.通过新浪提供的api:https: ...
- 【bzoj3105】【cqoi2013】【新Nim游戏】【线性基+贪心】
Description 传统的Nim游戏是这种:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量能够不同).两个游戏者轮流操作,每次能够选一个火柴堆拿走若干根火柴.能够仅仅拿一根,也能够拿走整堆火柴 ...
- 并发数 = QPS*平均响应时间
转:https://blog.csdn.net/luman1991/article/details/70919279 并发数 = QPS*平均响应时间 QPS(TPS):每秒钟request 每秒查询 ...