mybatis(一)环境的搭建
项目模型:
一、创建一个web项目ssm001
1、1准备数据
在数据创建表并添加数据
user表:
dept表:
/*
Navicat MySQL Data Transfer Source Server : ybt
Source Server Version : 50137
Source Host : 127.0.0.1:3306
Source Database : ssm001 Target Server Type : MYSQL
Target Server Version : 50137
File Encoding : 65001 Date: 2016-11-16 22:35:47
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`DEPTNO` decimal(4,0) DEFAULT NULL,
`DNAME` varchar(14) DEFAULT NULL,
`LOC` varchar(13) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('', 'ACCOUNTING', 'NEW YORK');
INSERT INTO `dept` VALUES ('', 'RESEARCH', 'DALLAS');
INSERT INTO `dept` VALUES ('', 'SALES', 'CHICAGO');
INSERT INTO `dept` VALUES ('', 'OPERATIONS', 'BOSTON');
emp表:
/*
Navicat MySQL Data Transfer Source Server : ybt
Source Server Version : 50137
Source Host : 127.0.0.1:3306
Source Database : ssm001 Target Server Type : MYSQL
Target Server Version : 50137
File Encoding : 65001 Date: 2016-11-16 22:36:14
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`EMPNO` decimal(4,0) NOT NULL,
`ENAME` varchar(10) DEFAULT NULL,
`JOB` varchar(9) DEFAULT NULL,
`MGR` decimal(4,0) DEFAULT NULL,
`HIREDATE` date DEFAULT NULL,
`SAL` decimal(7,2) DEFAULT NULL,
`COMM` decimal(7,2) DEFAULT NULL,
`DEPNO` decimal(4,0) DEFAULT NULL,
PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('', 'SMITH', 'CLERK', '', '1980-12-17', '1800.00', null, '');
INSERT INTO `emp` VALUES ('', 'ALLEN', 'SALESMAN', '', '1981-02-20', '1600.00', '300.00', '');
INSERT INTO `emp` VALUES ('', 'WARD', 'SALESMAN', '', '1981-02-22', '1250.00', '500.00', '');
INSERT INTO `emp` VALUES ('', 'JONES', 'MANAGER', '', '1981-04-02', '2975.00', null, '');
INSERT INTO `emp` VALUES ('', 'MARTIN', 'SALESMAN', '', '1981-09-28', '1250.00', '1400.00', '');
INSERT INTO `emp` VALUES ('', 'BLAKE', 'MANAGER', '', '1981-05-01', '2850.00', null, '');
INSERT INTO `emp` VALUES ('', 'CLARK', 'MANAGER', '', '1981-06-09', '2450.00', null, '');
INSERT INTO `emp` VALUES ('', 'KING', 'PRESIDENT', null, '1981-11-17', '5000.00', null, '');
INSERT INTO `emp` VALUES ('', 'TURNER', 'SALESMAN', '', '1981-09-08', '1500.00', '0.00', '');
INSERT INTO `emp` VALUES ('', 'JAMES', 'CLERK', '', '1981-12-03', '950.00', null, '');
INSERT INTO `emp` VALUES ('', 'FORD', 'ANALYST', '', '1981-12-03', '3000.00', null, '');
INSERT INTO `emp` VALUES ('', 'MILLER', 'CLERK', '', '1982-01-23', '1300.00', null, '');
INSERT INTO `emp` VALUES ('', 'KING', null, null, null, null, null, null);
1、2在web-INF下lib加入mybatis所需jar包:
1、3在项目src下配置mybatis配置文件config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-config.dtd">
<!-- configuration根标签 -->
<configuration>
<!-- 二、(1)定义实体bean名和数据库列名相对应 type:实体的路径 alias:实体的别名 -->
<typeAliases>
<typeAlias type="com.ckx.entity.User" alias="User" />
</typeAliases> <!-- 一、 配置环境信息 -->
<environments default="development">
<environment id="development">
<!-- 指定事务管理机制 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 POOLED: 连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssm001?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- 二、 (2)引入关系映射文件!!!这里有严格顺序!不能放在数据源配置前 -->
<mappers>
<mapper resource="com/ckx/entityMapper/User.xml" />
</mappers> </configuration>
请注意注释 “二、 (2)引入关系映射文件!!!这里有严格顺序!不能放在数据源配置前 ”,lz当时人为一个映射地址放在那里斗舞所谓,
结果报错,莫名其妙的找了好久的错,关于原因请参考:http://www.cnblogs.com/ckxlovejava/p/6059960.html
二、创建实体与映射文件:
2、1创建和数据库对应的实体user类,注意变量和数据库字段的对应
package com.ckx.entity; public class User {
private int userId;
private String userName;
private String passWord; public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
} }
2.2配置与实体相对的映射文件用于存放sql语句(user.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="com.ckx.entityMapper.User"> <select id="selectRoolByuserId" parameterType="int" resultType="User">
select * from ckx_user where UserId=#{UserId}
</select> </mapper>
三、测试
3.1创建测试类UserlTest.java:
package com.ckx.test; import java.io.IOException;
import java.io.Reader; 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 com.ckx.entity.User; public class UserlTest {
//获取org.apache.ibatis.session.SqlSessionFactory很重要
static SqlSessionFactory sessionFactory;
static Reader reader;
public User user; static{
try {
//获取org.apache.ibatis.io.Resources从config.xml的读入流
reader= Resources.getResourceAsReader("config.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //从数据库读取一条信息
private void selectRoolByuserId() {
SqlSession session = sessionFactory.openSession();
user= session.selectOne("com.ckx.entityMapper.User.selectRoolByuserId",1 );
System.out.println(user.getUserName());
} public static void main(String[] args) {
UserlTest ut = new UserlTest();
ut.selectRoolByuserId(); } }
运行:ckx
综合说明:
3.2查询一个结果集,例如:查询一个部门下的所有员工:
在emp表配置:
<!-- 定义结果集 type:指定数据类型 id:标识结果集 -->
<resultMap type="Emp" id="empList">
<!-- column:数据库字段别名 property:实体bean属性名称-->
<result column="EMPNO" property="empno" />
<result column="ENAME" property="ename" />
<result column="JOB" property="job" />
<result column="MGR" property="mgr" />
<result column="HIREDATE" property="hiredate" />
<result column="SAL" property="sal" />
<result column="COMM" property="comm" />
<result column="DEPNO" property="depno" />
</resultMap> <!--通过部门编号查询该部门的员工信息 这里返回的是一个结果集-->
<select id="selectEmps" parameterType="int" resultMap ="empList">
select * from emp where depno=#{depno}
</select>
因为我们查询的是一个部门下的所有人,因此查询返回结果我们用一个emplist,但是程勋不知道这个emplist是什么?这时候我们就要对他进行定义,
定义一个返回resultMap,并把sql查询的返回结果emplist赋给resultMap做ID,当然resultMap里放的数据肯定是实体emp,在resultMap里我们在对
数据库和实体进行一一指定,column:数据库字段别名 property:实体bean属性名称。
定义一个测试类进行测试:
package com.ckx.test; import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;
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 com.ckx.entity.Emp;
import com.ckx.entity.User; public class Emptest {
//获取org.apache.ibatis.session.SqlSessionFactory很重要
static SqlSessionFactory sessionFactory;
static Reader reader; static{
try {
//获取org.apache.ibatis.io.Resources从config.xml的读入流
reader= Resources.getResourceAsReader("config.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//从数据库读取一个list集合
public void selectEmps(){
SqlSession session = sessionFactory.openSession();
List<Emp> emps = session.selectList("com.ckx.entityMapper.Emp.selectEmps", 20);
//迭代器遍历
Iterator it = emps.iterator();
while (it.hasNext()) {
Emp e= (Emp) it.next();
System.out.println(e.getEname());;
}
//FOREACH循环迭代
for (Emp emp : emps) {
System.out.println(emp.getEname());
}
}public static void main(String[] args) {
Emptest et = new Emptest();
et.selectEmps();
} }
测试结果(文中用了两种遍历方式):
SMITH
JONES
FORD
SMITH
JONES
FORD
完成。
mybatis(一)环境的搭建的更多相关文章
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...
- 基于Maven的Spring + Spring MVC + Mybatis的环境搭建
基于Maven的Spring + Spring MVC + Mybatis的环境搭建项目开发,先将环境先搭建起来.上次做了一个Spring + Spring MVC + Mybatis + Log4J ...
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能
先回顾Mybits的环境搭建,. 直接next 直接点击finish 创建好的项目. 所有东西都自己写不现实,约束文件的头部还是拷贝过来 导入依赖坐标,Mybits mysql的驱动 log4j 单元 ...
- mybatis学习:mybatis的环境搭建与入门
一.mybatis的概述: mybatis是一个持久层框架,用java编写 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程 它使用了ORM思想 ...
- 搭建MyBatis开发环境及基本的CURD
目录 一.MyBatis概述 1. MyBatis 解决的主要问题 二.快速开始一个 MyBatis 1. 创建mysql数据库和表 2. 创建maven工程 3. 在pom.xml文件中添加信息 4 ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_06.mybatis的环境搭建
创建实体类,实现Serializable接口 属性名和数据库的字段名保持一致 Date字段需要导入包 生成gettter和setter,再生成一个ToString的方法 创建持久层Dao 创建接口 里 ...
- 搭建mybatis开发环境
1.创建工程 <groupId>com.hope</groupId> <artifactId>day01_eesy_01mybatis</artifa ...
- Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6956206.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(七)——My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6964162.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)--My ...
随机推荐
- mybatis 使用记录
首先,贴一个好文.把mybatis中的<if></if>的条件扒到源码分析了一遍.PS:目前还看不懂... http://cheng-xinwei.iteye.com/blog ...
- nginx,php相关
nginx安装 http://www.nginx.cn/install php安装 https://segmentfault.com/a/1190000004123048#articleHeader5 ...
- overload, override和overwrite之间的区别
Overload.Overwrite和Override的概念比较容易混淆,而且Overwrite和Override的中文翻译五花八门,让人很Confuse,顾保持英文原意: Overload 重载 ...
- gcc-常见命令和错误
一:编译过程的4个阶段:预处理,编译,汇编,链接; 1:最常用的方式 gcc hello.c -o hello 2:预处理后停止编译 gcc -E hello.c -o hello.i(.i通常为 ...
- [ActionScritp 3.0] 使用LocalConnection建立通信
包 flash.net 类 public class LocalConnection 继承 LocalConnection → EventDispatcher → Object 语言版本: Acti ...
- yum 部署nginx
第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx ...
- CCF NOI系列活动
NOI-全国青少年信息学奥林匹克竞赛全国青少年信息学奥林匹克竞赛(NOI)是国内信息学领域内面向中学生的最高水平的大赛,每省派经选拔产生的选手(其中一名是女选手)参加,NOI每年在不同的省市举行. N ...
- Struts2.3.4+Hibernate4.2.4+Mysql6.0整合
1.项目搭建过程: (1). 创建一个Web Project.导入Struts2和Hibernate的jar包.(如果不知道Struts2的jar包,可以在下载的struts的jar包中,找到apps ...
- django时区设置
1. 创建web目录 django-admin.py startproject mysite 2. 启动web服务 python manage.py runserver python manage.p ...
- MySQL-(Master-Slave)配置
1.两台机器,安装好版本一致的MySQL 192.168.29.128 (master) MySQL-5.6.21 192.168.29.129 (slave) MySQL-5.6.21 2.配置ma ...