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 ...
随机推荐
- 洛谷P1028数的计算
https://www.luogu.org/problemnew/show/P1028 只用递归会超时,需要用递归型动规,用一个数组保存已经算过的值,避免重复计算. 求数字为n的方案数的最优子结构为: ...
- Android BottomSheet:以选取图片为例(2)
Android BottomSheet:以选取图片为例(2) 附录文章5简单介绍了常见的分享面板在BottomSheet中的具体应用.本文再以常见的选取图片为例写一个例子. 布局文件: < ...
- HDU 1561 树形DP背包问题
这是自己第一道背包上树形结构问题,不是很理解这个概念的可以先看看背包九讲 自己第一次做,看了一下别人的思路,结合着对简单背包问题的求解方式自己一次AC了还是有点小激动的 题目大意是: 攻克m个城市,每 ...
- HDU——2824 The Euler function
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- MYSQL常用的性能指标
(1) QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Questio ...
- docker: 解决centos7下cgroup.procs: no such device的错误
在centos7下,运行docker run的时候会发生cgroup.procs: no such device的错误,解决方法是编辑 /lib/systemd/system/docker.servi ...
- JavaScript实现页面无刷新让时间走动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 数据切分——Atlas介绍
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本号的基础上,改动了大量bu ...
- PHP第五课 自己主动类型转换与流程控制
学习概要: 1.了解自己主动类型转换的有哪些 2.了解主要的流程控制语句 3.实例:实现日历表格的写法 自己主动类型转换 1)整型转字符串 echo $num."abc"; 2)字 ...
- iOS 设置启动页面 时间
[NSThread sleepForTimeInterval:3.0]; 时间越大 ,启动页面停留的时间越长 iOS 8之后,,创建项目自带的有 LaunchScreen.xib 可直接用