一、Mybatis介绍

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

二、jdbc问题总结如下:

  1. 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。如果使用数据库连接池可解决此问题。
  2. Sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。
  3. 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。
  4. 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

三、使用MyBatis需要进行配置

要用到SqlMapConfig.xml和mapper.xml。

SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

四、第一个MyBatis框架程序

------------------------------------Mybatis环境搭建----------------------------------------------------

  1. 导Jar包

    导三类:Mybatis核心jar,Mybatis所依赖的jar,数据库驱动(比如MySQL)

mybatis-3.2.7.jar        mybatis的核心包

lib文件夹            mybatis的依赖包所在

  1. 创建一个普通Java工程 并将jar包导到其下的lib目录且Build Path
  2. 导入数据库和POJO(也就是上学期的vo包)模块
  3. 创建相关配置文件

    Src/config下创建Mybatis核心配置文件:SqlMapConfig.xml

如下(固定格式):

<?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/mybatis?characterEncoding=utf-8"
/>

<property
name="username"
value="root"
/>

<property
name="password"
value="root"
/>

</dataSource>

</environment>

</environments>

</configuration>

创建sqlmap/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">

<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->

<mapper namespace="test">

</mapper>

  1. 告诉核心配置文件我加了映射文件

    ---------------------------开始编写代码测试-------------------------------------------------------

    1. 创建如下:
    2. 编写如下Java调用Mybatis的代码:

    3. 编写SQL映射文件里的SQL语句(User.xml中)
    4. <!-- id:statement的id 或者叫做sql的id-->
    5.     <!-- parameterType:声明输入参数的类型 -->
    6.     <!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
    7.     <!-- #{}:输入参数的占位符,相当于jdbc的? -->
    8.     <select
      id="queryUserById"
      parameterType="int"
    9.         resultType="cn.itcast.mybatis.pojo.User">
    10.         SELECT * FROM `user` WHERE id = #{id}
    11.     </select>

      --------------------------------------编写完毕,查看结果和问题-------------------------

      1. User.xml里的返回类型得写对cn.test.pojo.User
      2. SqlMapConfig.xml里数据库名和账号密码得写对

OK,这个Mybatis框架的第一个程序就搞定了。

其余的增删查改同理(除了查,其它都要提交事物),在那个User.xml里写sql语句再调用即可,最后完整增删查改如下:

Mybatis入门简版(一)的更多相关文章

  1. Mybatis入门简版(二)

    一.Dao层开发的方式 以前dao层开发比较繁琐,写了接口还得写实现类,实际上用了Mybatis之后写实现类非常重复,都是重复的代码.那么此时改成另外一种简单形式. 遵循以下四个原则(名称.形参.返回 ...

  2. Mybatis入门简版(补充)

    一.Mybatis 中$与#的区别 #相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#, ...

  3. Underscore源码阅读极简版入门

    看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: https://github.com/hanzichi/underscore-an ...

  4. Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门

    本章将涵盖以下话题: ž  MyBatis是什么? ž  为什么选择MyBatis? ž  MyBatis安装配置 ž  域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...

  5. MyBatis从入门到精通(1):MyBatis入门

    作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...

  6. Spring Boot (七): Mybatis极简配置

    Spring Boot (七): Mybatis极简配置 1. 前言 ORM 框架的目的是简化编程中的数据库操作,经过这么多年的发展,基本上活到现在的就剩下两家了,一个是宣称可以不用写 SQL 的 H ...

  7. Spring Boot 实战 —— MyBatis(注解版)使用方法

    原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...

  8. 第一节:mybatis入门

    1.新建数据表 本次测试使用mysql数据,数据库名称为mybatis,新建一张表person,建表语句如下: CREATE TABLE `person` ( `id` ) PRIMARY KEY a ...

  9. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

随机推荐

  1. linux安装python串口工具pyserial遇到不能成功导入的问题

    常规方法:pip install pyserial导入serial后提示: 解决方法:apt install python3-serial 参考:https://stackoverflow.com/q ...

  2. 渗透之路基础 -- 服务端请求伪造SSRF

    简介:SSRF 服务器端请求伪造,有的大型网站在web应用上提供了从其他服务器获取数据的功能.使用户指定的URL web应用获取图片,下载文件,读取文件内容.通常用于控制web进而探测内网服务以及攻击 ...

  3. .Net基础篇_学习笔记_第四天_switch-case

    swith-case 用来处理多条件的定值的判断. 语法: switch(变量或者表达式的值) { case 值1:要执行的代码: break: case 值2:要执行的代码: break: case ...

  4. C# DATETIME格式转换汇总 根据日期过期星期

    C# DateTime.Now.Year --2019(年) DateTime.Now.Month --9(月) DateTime.Now.Day   --19(日) DateTime.Now.Hou ...

  5. Sticks(剪枝+BFS)

    Problem Description George took sticks of the same length and cut them randomly until all parts beca ...

  6. Set集合、List集合

    集合体系:Collection.Map接口 存储数量不等的多个对象,不能存储基本数据类型,如存储基本数据类型会自动装箱 ======================================== ...

  7. 前端利器躬行记(6)——Fiddler

    Fiddler是一款免费的.基于Windows系统的代理服务器软件(即Web调试抓包工具),由Eric Lawrence用C#语言在2003年10月发布了第一个版本.注意,由于Fiddler依赖Mic ...

  8. pycharm最新版本激活码(永久有效) python安装教程

    Mac 系统自带python 1.打开终端, 输入 python 可以查看python当前版本. 2.输入“python”回车后即进入解释器,例如打印“hello world!”, 可输入 ‘ pri ...

  9. java数据结构——队列、循环队列(Queue)

    每天进步一点点,坚持就是成功. 1.队列 /** * 人无完人,如有bug,还请斧正 * 继续学习Java数据结构————队列(列队) * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数 ...

  10. python Fatal error in launcher

    1.之前电脑上只安装了一个python2.7时pip install virtualenv安装了virtualenv,后来又装了py3.6.最近想做断网环境下的虚拟环境快速移植发现查看virtuale ...