一、Mybatis开发环境

JDK:jdk_1.7

Eclipse:Oxygen.1 Release (4.7.1)

MySQL:MySQL Servr 5.7

1、添加相关ja r包

mybatis的jar包可以从https://github.com/mybatis/mybatis-3/releases下载,下载的解压包中包含了核心包(mybatis-*.jar)、使用手册(mybatis-*.pdf)、相关依赖包(lib)等。

使用eclipse创建Dynamic Web project 工程,在lib文件夹中加入Mybatis的核心包、依赖包和数据库驱动包等相关包,并将jar包add to bulid path中。

                

图1-1-1 复制jar包到lib目录                                图 1-1-2 Add to bulid path

2、相关配置文件

在工程中新建Source Folder类型的config文件夹,用于存放Mybatis的数据库连接信息、日志、SqlMapConfig等相关配置文件。

(1)log4j.properties

mybatis默认使用log4j作为输出日志信息。

 # Global logging configuration
#在开发环境下日志级别要设置成DEBUG,生成环境设置成info或error
log4j.rootLogger=

DEBUG

, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

(2)建立映射文件

在config/sqlmap目录下创建sql映射文件emp.xml,可以通过nameplace引用具体的SQL标签。

 <?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="test">
</mapper>

(3)SqlMapConfig.xml

SqlMapConfig.xml是mybatis用于配置数据源、事务管理的核心配置文件。

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/
scott?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="su486213" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="SqlMap/emp.xml"/>
</mappers>
</configuration>

3、po类

po类用于mybatis进行sql映射,属性与数据库表中的字段需要相对应。

 package po;
import java.util.Date;
public class Emp {
private int empno;
private String ename;
private String job;
private int mgr;
private Date hiredate;
private double sal;
private double comm;
private int deptno;
set/get() ...;
}

4、会话工厂

  package Test;
//请导入所需的java类
public class Mybatis_first {
//使用 单例模式 创建会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void createSqlSessionFactory() throws IOException {
// Mybatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会化工厂,传入Mybatis配置文件信息
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
//测试类
@Test
}

二、Junit单元测试

1、根据id获取员工信息

(1)映射文件

 <select id="findEmpById" parameterType="int" resultType="po.Emp">
select * from emp where empno = #{empno}
</select>

(2)测试程序

 	@Test
public void testFindEmpById() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 根据部门id查询单个记录,如果使用selectOne查询多条记录则抛出异常:
Emp dept = sqlSession.selectOne("test.findEmpById", 7369);
// 输出用户信息
System.out.println(dept);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}

(3)运行结果

2、根据员工姓名模糊查询员工信息

(1)映射文件

 <select id="findEmpByEmpname" parameterType="java.lang.String" resultType="po.Emp">
select * from emp where ename like '%${value}%'
</select>

(2)测试程序

 	@Test
public void testFindEmpByEmpname() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 查询一条或多条记录,根据用户id查询用户信息
List<Emp> list = sqlSession.selectList("test.findEmpByEmpname", "TH");
System.out.println(list.size());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
} }

(3)运行结果

3、添加员工信息

(1)映射文件

 <insert id="insertEmp" parameterType="po.Emp">
<selectKey keyProperty="empno" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID()//返回自增主键
</selectKey>
insert into emp(ename,job) values(#{ename},#{job})
</insert>

(2)测试程序

 	@Test
public void testInsert() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加员工信息(empno是自增主键)
Emp emp = new Emp();
emp.setEname("admin");
emp.setJob("test");
sqlSession.insert("test.insertEmp", emp);
//提交事务
sqlSession.commit();
//返回自增主键
System.out.println(emp.getEmpno());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}

(3)运行结果

4、更新员工信息

(1)映射文件

 <delete id="deleteEmpById" parameterType="int">
delete from emp where empno=#{empno}
</delete>

(2)测试程序

 	@Test
public void testUpdate() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加员工信息
Emp emp = new Emp();
emp.setEmpno(7938);
emp.setEname("admin1");
emp.setJob("tes2t");
sqlSession.update("test.updateEmp", emp);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}

(3)运行结果

5、删除员工信息

(1)映射文件

 <update id="updateEmp" parameterType="po.Emp">
update emp set ename=#{ename},job=#{job} where empno=#{empno}
</update>

(2)测试程序

 	@Test
public void testDelete() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 删除员工
sqlSession.delete("test.deleteEmpById",7941);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}

(3)运行结果

Mybatis笔记 – 入门程序开发的更多相关文章

  1. Java入门程序开发

    Java入门程序开发 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Java程序开发流程 Java程序开发流程如下: >.将Java代码编写到扩展名为".jav ...

  2. Mybatis笔记 - 原始Dao开发方法

    使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法.原始Dao的开发方式是基于入门程序的基础上,对 控制程序 进行分层开发,程序员需要 编写 Dao接口 和 ...

  3. 零基础学习java------36---------xml,MyBatis,入门程序,CURD练习(#{}和${}区别,模糊查询,添加本地约束文件) 全局配置文件中常用属性 动态Sql(掌握)

    一. xml  1. 文档的声明 2. 文档的约束,规定了当前文件中有的标签(属性),并且规定了标签层级关系 其叫html文档而言,语法要求更严格,标签成对出现(不是的话会报错) 3. 作用:数据格式 ...

  4. Linux入门-程序开发

    Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...

  5. mybatis框架入门程序:演示通过mybatis实现数据库的查询操作

    我们现在工程基于的数据库见“https://www.cnblogs.com/wyhluckdog/p/10147754.html”这篇博文. 1.mybatis下载 mybatis的代码由githua ...

  6. Mybatis(二)入门程序-通过id查找用户、模糊查找用户、添加用户、删除用户

    根据下图myBatis的架构,创建一个使用MyBatis的工程.       一.配置MyBatis 环境(如图) 1.sqlMapConfig.xml 首先,导入jar包(上图右边)并加载路径,然后 ...

  7. mybatis框架入门程序:演示通过mybatis实现数据库的修改操作

    1.mybatis的基本配置工作可以在我的这篇博客中查看:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2.修改用户的配置文件: <upd ...

  8. mybatis框架入门程序:演示通过mybatis实现数据库的删除操作

    1.mybatis的基本配置工作可以在我的这篇博客中查看:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2.删除用户的映射文件: <!-- ...

  9. mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取

    1.mybatis实现数据库的插入操作可以查看https://www.cnblogs.com/wyhluckdog/p/10149895.html这篇博文,这里面的插入操作没有返回结果,所以这篇博文就 ...

随机推荐

  1. SpringCloud+Eureka+Feign+Ribbon+zuul的简化搭建流程和CRUD练习

    环境:win10--idea2019--jdk8 1.搭建Eureka服务模块 1.1 新建eureka服务模块(Sping Initializr) 取名为eureka-server,并添加如下Dep ...

  2. SolidWorks新建三维零件

    1.创建工作目录. 2.新建一个零件三维模型文件. 3.创建零件中的各个特征 (1).创建第一个特征(基础特征) ①选择命令 ②创建截面草图 定义草图平面 定义截面草图 完成草图 ③定义深度等属性 定 ...

  3. leetcode-263-丑数一

    题目描述: 方法一:递归 class Solution: def isUgly(self, num: int) -> bool: if num == 0: return False if num ...

  4. 5432. 【NOIP2017提高A组集训10.28】三元组

    题目 题目大意 给你\(X+Y+Z\)个三元组\((x_i,y_i,z_i)\). 然后选\(X\)个\(x_i\),选\(Y\)个\(y_i\),选\(Z\)个\(z_i\). 每个三元组只能选择其 ...

  5. dfs版容斥原理+剪枝——bzoj1853

    学了一种爆搜版+剪枝的容斥方法,即类似数位dp时按位进行容斥,同时需要在搜索过程中进行剪枝 /* 容斥原理,先在打出的表里筛掉所有倍数,然后用容斥原理+1个的倍数-2个lcm的倍数+3个lcm的倍数. ...

  6. NX二次开发-创建圆弧(圆心-半径)UF_CURVE_create_arc

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_ui.h> #include <u ...

  7. C/Python/Java环境变量配置

    链接 全图预览: Java: 只需添加下面三个环境变量即可使用Java.对照这我的添加就行. CLASSPATH的内容: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\li ...

  8. P1566 加等式

    P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...

  9. LeetCode 176. Second Highest Salary (第二高的薪水)

    题目标签: 题目给了我们一个工资表,让我们返回第二高的工资. 利用Max,把第一高的工资找到,然后利用 NOT IN,去找到第二高的工资. Java Solution: Runtime:  153ms ...

  10. 阿里云ecs(phpstudy一件包)

            选择语言       保存并连接    Linux硬盘挂载是比较常见的管理操作之一.默认情况下数据盘没有挂载,需要手动挂载到系统中.     具体操作是分三步:     硬盘挂载1)需 ...