项目模型:

一、创建一个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&amp;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(一)环境的搭建的更多相关文章

  1. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  2. 基于Maven的Spring + Spring MVC + Mybatis的环境搭建

    基于Maven的Spring + Spring MVC + Mybatis的环境搭建项目开发,先将环境先搭建起来.上次做了一个Spring + Spring MVC + Mybatis + Log4J ...

  3. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能

    先回顾Mybits的环境搭建,. 直接next 直接点击finish 创建好的项目. 所有东西都自己写不现实,约束文件的头部还是拷贝过来 导入依赖坐标,Mybits mysql的驱动 log4j 单元 ...

  4. mybatis学习:mybatis的环境搭建与入门

    一.mybatis的概述: mybatis是一个持久层框架,用java编写 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程 它使用了ORM思想 ...

  5. 搭建MyBatis开发环境及基本的CURD

    目录 一.MyBatis概述 1. MyBatis 解决的主要问题 二.快速开始一个 MyBatis 1. 创建mysql数据库和表 2. 创建maven工程 3. 在pom.xml文件中添加信息 4 ...

  6. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_06.mybatis的环境搭建

    创建实体类,实现Serializable接口 属性名和数据库的字段名保持一致 Date字段需要导入包 生成gettter和setter,再生成一个ToString的方法 创建持久层Dao 创建接口 里 ...

  7. 搭建mybatis开发环境

    1.创建工程 <groupId>com.hope</groupId>     <artifactId>day01_eesy_01mybatis</artifa ...

  8. Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——My ...

  9. Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6956206.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(七)——My ...

  10. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6964162.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)--My ...

随机推荐

  1. [BZOJ 3530][Sdoi 2014]数数

    阿拉~好像最近总是做到 AC 自动机的题目呢喵~ 题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp 先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不 ...

  2. IDEA 中 显示 *.properties 为中文

      效果:  

  3. 【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限

    ShellExecuteEX编程 --- 获取管理员权限:http://blog.csdn.net/jhui163/article/details/5873027 怎样让你的应用程序获得管理员权限:就 ...

  4. 使Maven 2在package、install等阶段跳过运行Test的配置

    方法1: To skip running the tests for a particular project, set the skipTests property to true.<proj ...

  5. indexOf ie下的兼容问题

    今天突然发现ie下报错,不支持的属性,原来ie下不支持indexOf. 加入如下代码即可解决. if (!Array.prototype.indexOf){  Array.prototype.inde ...

  6. Logstash安装及部署

    安装及部署 一.环境配置 操作系统:Cent OS 7 Logstash版本:2.1.1.tar.gz JDK版本:1.7.0_51 SSH Secure Shell版本:XShell 5 二.操作过 ...

  7. python---字符编码

    获取系统默认字符编码 在Python代码中,普通字符串的编码方式与程序源文件编码方式一致的,而很多IDE在默认情况下,将程序源文件按照系统默认字符编码来保存的. 下面给出用Python获取系统默认编码 ...

  8. SUSE Linux 13服务器版

    SUSE Linux 下面打开图形界面下的终端 桌面右键,选择运行 konsole命令打一桌面终端插件 配置静态ip /etc/sysconfig/network/ 虚拟机下面的网卡 vi /etc/ ...

  9. mac与php环境

    一.目录 apache目录:/etc/apache2/ mysql目录:/usr/local/mysql/ 站点目录:/Library/WebServer/Documents/ 二.mac系统给文件夹 ...

  10. 转:LoadRunner负载测试之Windows常见性能计数器,分析服务器性能瓶颈

    发布于2012-10-8,来源:博客园 监测对象 System(系统) l %Total Processor Time 系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所 ...