初次体验MyBatis的注意事项

一、MyBatis的HelloWord

1.根据xml配置文件(全局配置文件mybatis-config.xml)创建一个SqlSessionFactory对象 有数据源一些运行环境信息

<?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>
   <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://localhost:3306/mybatis" />
            <property name="username" value="root" />
            <property name="password" value="123456" />
         </dataSource>
      </environment>
   </environments>
   <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
   <mappers>
      <mapper resource="EmployeeMapper.xml" />
   </mappers>
</configuration>

2.sql映射文件EmployeeMapper.xml;配置了每一个sql,以及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="com.atguigu.mybatis.dao.EmployeeMapper">
<!--
namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值

public Employee getEmpById(Integer id);
分离实现与接口
 -->
   <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
      select id,last_name lastName,email,gender from tbl_employee where id = #{id}
   </select>
</mapper>

3.将sql映射文件注册在全局配置文件mybatis-config.xml中

<mappers>
   <mapper resource="EmployeeMapper.xml" />
</mappers>

4.写代码:

1).根据全局配置文件得到SqlSessionFactory;

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

2).使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查,一个sqlSession就是代表和数据库的一次会话,用完关闭

SqlSession openSession = sqlSessionFactory.openSession();

3).使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的

try {
   Employee employee = openSession.selectOne(
         "com.atguigu.mybatis.dao.EmployeeMapper.getEmpById", 1); // spacename + sqlId
   System.out.println(employee);
} finally {
   openSession.close();
}

二、MyBatis接口式编程

mybatis:    Mapper.java(接口) ====>  xxMapper.xml(实现)

接口式编程的好处在于,能够将功能与实现相分离

1、SqlSession代表和数据库的一次会话;用完必须关闭;
2、SqlSession和connection一样它都是非线程安全。每次使用都应该去获取新的对象。
3、mapper.java接口没有实现类,但是mybatis会为这个接口生成一个代理对象。(将接口和xml进行绑定)
EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class);
4、两个重要的配置文件:

  • mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等…系统运行环境信息
  • sql映射文件:保存了每一个sql语句的映射信息:将sql抽取出来。

到此这篇关于初次体验MyBatis的注意事项的文章就介绍到这了,更多相关MyBatis的用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java中mybatis和hibernate的用法总结

    在项目开发上,hibernate提供的经验简化了不少工作量和兼容性,但这些绝对需要有经验后才能明白,对于新手来说使用起来很困难.hibernate比mybatis掌握难度要高一些,对sql的控制弱一些.下面我们就三个方面带来mybatis和hibernate的总结分析,一起来看看二者的比较吧. 1.开发效率 如果是做一些简单的CMS类似的只有简单的增删改查的项目,那么使用Hibernate更有优势,不需要掌握太多的Hibernate知识,只需要会一些基本的查询和一些配置(Hibernate真正要

  • springboot2.3 整合mybatis-plus 高级功能及用法详解

    -学习并使用mybatis-plus的一些高级功能的用法例如: AR模式. 乐观锁 .逻辑删除 .自动填充.数据保护等功能 为了方便演示,咱们还是新建一个全新的项目 引入mp依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> &l

  • 浅谈MyBatis循环Map(高级用法)

    今天遇到一个比较特殊的业务,需要对传入的Map数据在映射文件中进行遍历,在之前的学习中,我们也知道MyBatis有默认对集合的操作list和array,但是没有默认的map,所有不能直接写collection="map",如果这么处理,它会当成是根据map.get("map")获取传递value只,==大部分情况下是一个map中是不会有"map"这个key的,于是就是报错==.如果你想用map标识来获取参数map,就需要保证传入的Map参数有@P

  • MyBatis动态Sql之if标签的用法详解

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动态的Sql,主要包含以下3个场景: 1.根据查询条件实现动态查询 2.根据参数值实现动态更新某些列 3.根据参数值实现动态插入某些列 1. 使用if标签实现动态查询 假设有这样1个需求:根据用户的输入条件来查询用户列表,如果输入了用户名,就根据用户名模糊查询,如果输入了邮箱,就根据邮箱精确查询,如果同时输入了

  • Mybatis动态SQL foreach标签用法实例

    需求:传入多个 id 查询用户信息,用下边两个 sql 实现: SELECT * FROM USERS WHERE username LIKE '%张%' AND (id =10 OR id =89 OR id=16) SELECT * FROM USERS WHERE username LIKE '%张%' AND id IN (10,89,16) 这样我们在进行范围查询时,就要将一个集合中的值,作为参数动态添加进来. 这样我们将如何进行参数的传递? 1.实体类 public class Qu

  • mybatis之foreach用法详解

    在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close. item:集合中元素迭代时的别名,该参数为必选. index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open:foreach代码的开始符号,一般是(和close=")

  • 初次体验MyBatis的注意事项

    一.MyBatis的HelloWord 1.根据xml配置文件(全局配置文件mybatis-config.xml)创建一个SqlSessionFactory对象 有数据源一些运行环境信息 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://m

  • Windows2008初次体验的几个心得图文

    终于下定决心,把家里笔记本的操作系统装成了Win2008.(Windows Server 2008 June 2007 CTP).在安装使用中,碰到了一系列的问题,特整理如下,避免后来者被这些问题所阻挡. 一.Win2008中的Internet Explorer 增强安全性设定 Win2003我们如果不是作为运维环境的服务器,而是开发机使用的时候,安装好Win2003后,第一件事情就是卸载Internet Explorer 增强安全性设定(Internet Explorer Enhanced S

  • 初次使用Docker的体验笔记总结

    一.前言 Docker容器已经发布许久,但作为一名程序员如今才开始接触,实在是罪过-- 在此之前,我还没有对Docker进行过深入的了解,对它的认识仍停留在:这是一种新型的虚拟机.这样的层面.今天就我的初次体验进行记录.声明一点:以下内容大部分是主观片面的,另有来自百度的(嗯,就是百度).要是有什么说的不对,或者是理解有问题的地方,还请大家告诉我,先谢谢大家了. 二.环境 我的基础运行环境是运行在Win10专业版HyperV虚拟机中的CentOS7-Minimal版本.新装的虚拟机,保证运行环境

  • MyBatis 如何写配置文件和简单使用

    MyBatis 如何写配置文件和简单使用 MyBatis3.x 这里简单贴一下MyBatis的介绍,具体使用方法会在代码中贴出. MyBatis的前世今生 MyBatis的前身就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基金会,成立了iBatis开源项目.2010年5月该项目由Apahce基金会迁移到了Google Code,并且改名为MyBatis. 尽管如此,它的包结构仍然为ibatis. www.mybatis.org/ https://gith

  • MyBatis配置文件的写法和简单使用

    初识 MyBatis 一 最初 Apache 有一个batis的开源项目,放在Google code 中,后来因为一些原因迁移到了github,就是今天的myBatis 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集.MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普

  • MyBatis Plus 入门使用详细教程

    一.MyBatis Plus 介绍 MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. MyBatis Plus 的核心功能有:支持通用的 CRUD.代码生成器与条件构造器. 通用 CRUD:定义好 Mapper 接口后,只需要继承 BaseMapper<T> 接口即可获得通用的增删改查功能,无需编写任何接口方法与配置文件条件构造器:通过 EntityWrapper<T> (实体包装类),可

  • python 用matplotlib绘制折线图详情

    目录 1. 折线图概述 1.1什么是折线图? 1.2折线图使用场景 1.3绘制折线图步骤 1.4案例展示 2. 折线2D属性 2.1linestyle:折线样式 2.2color:折线颜色 2.3marker:坐标值标记 2.4fillstyle:标记填充方法 2.5linewidth(lw): 直线宽度 3. 坐标管理 3.1坐标轴名字设置 3.2坐标轴刻度设置 3.3坐标轴位置设置 3.4指定坐标值标注 4. 多条折线展示图 5. 图列管理 复习回顾: 众所周知,matplotlib 是一款

  • PWA介绍及快速上手搭建一个PWA应用的方法

    PWA初次体验 前言:本示例不用安装任何东西 部分资源来自网络资源及PWA官网,不要把PWA想象的太复杂,跟着示例走一下,你行的. PWA介绍 一个新的前端技术,PWA( 全称:Progressive Web App )也就是说这是个渐进式的网页应用程序. 官网: https://developers.google.com/web/progressive-web-apps/ 是 Google 在 2015 年提出,2016年6月才推广的项目.是结合了一系列现代Web技术的组合,在网页应用中实现和

  • javascript中的闭包概念与用法实践分析

    本文实例讲述了javascript中的闭包概念与用法.分享给大家供大家参考,具体如下: 闭包的概念:闭包是指有权访问另一个函数作用域中的变量的函数 (引自<javascript高级程序设计第三版>178页).闭包的优点是不会产生全局变量,避免变量污染问题,但是闭包也有一个缺点就是闭包携带包含它的函数作用域会比其它函数占用更多的内存,过度使用会导致内存占用过多. wiki上关于闭包的概念: In programming languages, closures (also lexical clos

  • 手把手带你入门 Spring Security的具体流程

    Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下. 相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security

随机推荐