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 ...
随机推荐
- hadoop 3.0.0新特性
1.Minimum required Java version increased from Java 7 to Java 8 java最低支持版本变成java8 2.Support for eras ...
- 转载 - Struts2 拦截器详细配置过程
出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Inter ...
- Memcached高可用方案收集(集群及分布式)
Memcached的集群方案有很多,不止magent一个,但是单靠集群软件去实现高可用感觉还是会缺少一步,最推荐的方案应该是软件加编码去实现高可用,至少能保证站点的99.5%的可运行行,以下是集群的方 ...
- Redis3.0集群方案分析
在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底 ...
- sql-server-storage-internals
https://www.simple-talk.com/sql/database-administration/sql-server-storage-internals-101/
- Redhat 6.1安装ArcGIS Server10.1
http://blog.csdn.net/linghe301/article/details/7762985 操作环境:Redhat 6.1 Linux 安装ArcGIS Server10.1之前,还 ...
- javascript 事件对象(event 对象)
原文: http://www.cnblogs.com/songyaqi/p/5204143.html <html> <head> <title> Track Mou ...
- hdu 4587 推断孤立点+割点+ 删除点之后,剩下多少连通分量
做了非常久...... 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4587 先枚举删除的第一个点,第二个点就是找割点.没有割点当然也有答案 学到 ...
- Linux网络编程:UDP Socket编程范例
TCP协议提供的是一种可靠的,复杂的,面向连接的数据流(SOCK_STREAM)传输服务,它通过三段式握手过程建立连接.TCP有一种"重传确认"机制,即接收端收到数据后要发出一个肯 ...
- LeetCode 961. N-Repeated Element in Size 2N Array (重复 N 次的元素)
题目标签:HashMap 题目给了我们一个size 为 2N 的int array,其中有 N + 1 个唯一的 数字,让我们找出那个重复的数字. 利用hashset,把每一个数字存入,一旦发现有重复 ...