文档章节

Mybatis入门

akane_oimo
 akane_oimo
发布于 07/21 22:36
字数 987
阅读 8
收藏 0

简介:

定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。

途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。

特性:动态SQL语句。

文件结构:Mybatis主要有两种配置文件:全局配置文件和映射文件。

  • 全局配置文件:配置数据库连接、映射文件等。
  • 映射文件:配置SQL语句等。

使用流程

  1. 创建数据库,组织数据入库
  2. 定义pojo
  3. 定义数据访问接口,声明对应的方法
  4. 创建全局配置文件,配置数据库链接、映射文件等
  5. 创建映射文件,配置具体的SQL语句
  6. 实现业务逻辑

示例:

1、创建数据库,组织数据入库:

CREATE TABLE `client_infor` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cp_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8;

2、定义pojo:

public class Client {
	private int id;  //客户ID
	private String cp_name;  //客户名称
	
	public int getId() {  return id;  }
	public void setId(int id) {  this.id = id;  }
	public String getCp_name() {  return cp_name;  }
	public void setCp_name(String cp_name) {  this.cp_name = cp_name;  }
}

3、定义数据访问接口:

public interface ClientDAO {
    //根据客户名称删除客户信息
	public boolean deleteClient(String name) throws Exception;
}

4、创建全局配置文件:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/infor_mg" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 映射文件路径 -->
        <mapper resource="com/mapping/Client.xml" />
    </mappers>
</configuration>

5、创建映射文件:

<mapper namespace="ClientDAO的类路径">
    <delete id="deleteClient" parameterType="String">
        DELETE FROM Infor_mg WHERE name = #{name}
    </delete>
</mapper>

6、实现业务逻辑:

public class Main {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("config/Configure.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SqlSession session = sqlSessionFactory.openSession();
        IUser iuser = session.getMapper(IUser.class);
        try {
            // 执行删除
            iuser.deleteUser("开源中国");
            // 提交事务
            session.commit();
        } finally {
            session.close();
        }
    }
}

示例2:

/**
 * 1、接口式编程
 * 	原生:		Dao		====>  DaoImpl
 * 	mybatis:	Mapper	====>  xxMapper.xml
 * 
 * 2、SqlSession代表和数据库的一次会话;用完必须关闭;
 * 3、SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。
 * 4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
 * 		(将接口和xml进行绑定)
 * 		EmployeeMapper empMapper =	sqlSession.getMapper(EmployeeMapper.class);
 * 5、两个重要的配置文件:
 * 		mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
 * 		sql映射文件:保存了每一个sql语句的映射信息:
 * 					将sql抽取出来。	
 *
 */
public class MyBatisTest {
	
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

	/**
	 * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
	 * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 
	 * 3、将sql映射文件注册在全局配置文件中
	 * 4、写代码:
	 * 		1)、根据全局配置文件得到SqlSessionFactory;
	 * 		2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
	 * 			一个sqlSession就是代表和数据库的一次会话,用完关闭
	 * 		3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
	 * 
	 * @throws IOException
	 */
	
	@Test
	public void test01() throws IOException {
		// 1、获取sqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		// 2、获取sqlSession对象
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			// 3、获取接口的实现类对象
			//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = mapper.getEmpById(1);
			System.out.println(mapper.getClass());
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
}

补充:

发现一个非常好的Mybatis详细教程,地址:https://www.w3cschool.cn/mybatis/

© 著作权归作者所有

共有 人打赏支持
akane_oimo
粉丝 20
博文 129
码字总数 156483
作品 0
南京
其他
MyBatis3.2.x从入门到精通系列

Java框架篇---Mybatis 入门 MyBatis3.2.x从入门到精通之第一章 MyBatis3.2.x从入门到精通之第二章 MyBatis3.2.x从入门到精通之第三章 MyBatis3.2.x从入门到精通之第四章 MyBatis3.2.x从入门到...

HenrySun
2016/10/07
54
0
Mybatis 轻松入门教程

Mybatis框架 的快速入门 MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集...

yxhusmart
2016/11/04
11
0
MyBatis学习笔记系列教程

【MyBatis学习笔记】系列之预备篇一:ant的下载与安装 【MyBatis学习笔记】系列之预备篇二:ant入门示例 【MyBatis学习笔记】系列之一:MyBatis入门示例 【MyBatis学习笔记】系列之二:MyBat...

HenrySun
2016/10/15
19
0
深入浅出MyBatis-快速入门

深入浅出MyBatis-快速入门 深入浅出MyBatis-Configuration 深入浅出MyBatis-MapperBuilder 深入浅出MyBatis-Sqlsession 深入浅出Mybatis-插件原理 深入浅出Mybatis-分页 深入浅出Mybatis-sql...

perfectspr
2014/11/26
0
1
老雷/spring-boot-starter-dao

spring-boot-starter-dao 该项目,集成spring-boot,mybatis,通用mapper,pagehelper,druid。致力于降低数据层的开发复杂度,让mybatis配置彻底告别xml,让基于mybatis的开发嵌入jpa的身影,极...

老雷
2017/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
11分钟前
0
0
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决

有个项目使用的log4j进行日志记录的,同时也是用log4j中的数据库配置直接把相应级别的日志直接插入oracle。 在把项目部署的另一个内网环境时候,把项目的其他配置都改了,唯独log4j中的数据库...

哥本哈根的小哥
21分钟前
0
0
耗时 2 年,用 8.5 万块乐高积木最牛复刻 Apple Park

简评:国外大佬复刻 Apple Park,看了一下细节,确实厉害!只有你想不到,没有乐高拼不起来的,有没有乐高大神挑战一下? 苹果公园以各种各样的方式鼓舞人心,让人感兴趣。从建筑、可持续性和...

极光推送
22分钟前
0
0
记一次查找Hdfs磁盘占用空间比实际存储文件大4倍的原因

在一次主备namenode发生切换后,重启datanode节点,发现磁盘空间很大,想清理一下磁盘, 通过命令Hdfs dfs -du -h --max-depth=1 / 发现实际文件的大小只有8g,通过du -h --max-depth=1 /ha...

PageYi
49分钟前
4
0
阿里云推荐引擎使用教程

产品概述: 推荐引擎(Recommendation Engine,以下简称RecEng,特指阿里云推荐引擎)是在阿里云计算环境下建立的一套推荐服务框架,目标是让广大中小互联网企业能够在这套框架上快速的搭建满...

mcy0425
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部