MyBatis 学习入门
mybatis 第一天 mybatis的基础知识
持久层的框架,对jdbc的封装
课程安排
第一天:基础知识(重点,内容量多)
最简单的jdbc程序
public class JdbcTest{
public static void main(String[] args){
//数据库连接
Connection connection = null;
//预编译的Statement,使用预编译的statement提高数据库的性能
//通过preparedStatement向数据库发送一个sQL语句,数据库那边进行编译你写的SQL语句
//编译完后存在数据库端的缓存中,下次再发如果sql相同,它就不会编译了,提高性能
PreparedStatement preparedStatement = null;
//结果集对象
ResultSet resultSet = null;
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncodeing=utr-8","root","mysql");
//定义sql语句?表示占位符
String sql = "select * from user where username = ?";
//获取预处理的statement
preparedStatement = connection.preparedStatement(sql);
//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1,"王五");//1表示占位符的位置
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历查询结果集
while(resultSet.next){
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
//释放资源
if(resultSet != null){
try{
resultSet.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
if(preparedStatement != null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(Connection != null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
对原生态jdbc程序(单独使用jdbc开发)问题总结
mybatis框架原理
mybatis入门程序
用户的增、删、改、查
mybatis开发dao两种方法:
原始dao开发方法(程序编写dao接口和dao实现类)(掌握)
mybatis和mapper接口(相当于dao接口)代理方法(掌握)
mybatis配置文件SqlMapCoinfig.xml
mybatis核心:
mybatis输入映射
mybatis输出映射
第二天:高级知识
高级结果集映射(一对一、一对多、多对多)
mybatis延迟加载
mybatis查询缓存(一级缓存、二级缓存)
mybatis和spring进行整合(掌握)
mybatis的逆向工程
1原生态的jdbc程序中问题总结
1.1、环境:
jdk环境:jdk 1.7
开发环境:Eclipse
数据库:mysql
1.2、创建mysql数据库
sql_table.sql 记录了表结构
sql_data.sql 记录了测试数据,在实际的企业开发中,最后提供一个初始化的数据脚本
1.3、jdbc程序
使用jdbc查询mysql数据库中用户表的记录。
1.4、问题总结
1、数据库连接,使用时就创建,不适用立即释放,对数据进行频繁的开启和关闭
造成资源浪费,影响了数据库的性能
解决方案:使用数据库连接池管理连接
2、将sql语句硬编码到Java代码中,如果sql语句修改,重新编译java代码,
不利于系统维护。
设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java
代码进行重新编译。
3、向preparedStatement中设置参数,对占位符和位置和设置参数值,
硬编码在java代码中,不利于系统维护。
设想:将sql语句及占位符和参数全部配置在xml中。
4、从resultSet中遍历结果集数据时存在硬编码,将获取表的字段进行硬编码,
不利于系统维护。
设想:将查询的结果自动的映射成java对象。
2 mybatis 框架
2.1 mybatis是什么?
mybatis是一个持久层框架,是Apache下的顶级项目
mybatis托管到googlecode下,再后来托管到github下
mybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式
,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需求的sql语句。
mybatis可以将向preparedStatement中输入参数自动进行输入映射,将查询结果集
灵活的映射成java对象。
2.2 mybatis框架

3 入门程序
3.1需求
根据用户id(主键) 查询用户信息
根据用户名称模糊用户信息
添加用户
修改用户
删除用户
环境:
jdk环境:jdk 1.7
开发环境:Eclipse
数据库:mysql
Mybatis的运行环境(jar包)
从Github下3.2.7版本

lib下:
mybatis-3.2.7.jar:核心包
log4j.jar:
cglib:动态代理(mapper代理)
mybatis.pdf操作指南
加入mysql数据库的驱动包
3.2 log4j.properties

3.3 工程目录结构

3.4 SqlMapConfig.xml
配置mybatis的运行环境、数据源、事务等。

3.5 根据用户id查询用户的信息
3.5.1 映射文件
映射文件命名:
User.xml(原始的ibatis的命名方式),mapper代理开发映射文件名称叫XXXMapper.xml,比如UserMapper.xml、ItemsMapper.xml
在映射文件中配置sql语句
MyBatis 学习入门的更多相关文章
- MyBatis学习-入门
eclipse + jdk 1.8 + mybatis 1.数据库准备 安装mysql数据库,建立数据库test,在test库下建立测试的表 CREATE TABLE `t_user` ( `id` ...
- MyBatis学习-入门篇
一.MyBatis 介绍 MyBatis 是支持普通的 SQL 查询,存储过程和高级映射的优秀持久层框架,可以进行更为细致的 SQL 优化,减少查询字段.几乎消除了所有的 JDBC 代码和参数的手工设 ...
- Mybatis学习—入门
总结自 Mybatis官方中文文档 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手 ...
- 【转】MyBatis学习总结(一)——MyBatis快速入门
[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...
- MyBatis学习总结(一)简单入门案例
MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...
- Mybatis学习笔记之一(环境搭建和入门案例介绍)
一.Mybatis概述 1.1 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了go ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- Mybatis基础入门学习
Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
随机推荐
- system.badimageformatexception 未能加载文件或程序集
今天在调用dll文件的时候发现这样一个错误. system.badimageformatexception 未能加载文件或程序集. 发现项目CPU默认Any CPU,我的系统是X64,将 ...
- Asp.Net Cookie的清除
背景 最近做到一个asp.net项目,项目中保存用户信息用到了cookie,因此,在注销身份的时候,就需要清除掉cookie. 探索过程 我先是试验了这种代码,在没有特殊声明前,代码都是写在Page_ ...
- SQL Server调优系列进阶篇 - 如何索引调优
前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本 ...
- mysql innodb 数据打捞(三)innodb 簇不连接页的扫描提取(计划)
操作系统簇大小一般是4K,而innoDB的页大小一般是16K,那么就有可能16K的页没有存储在连续的簇中,这样扫描软件就不会扫描出来这样的页面.为了解决这个问题,决定给软件增加半页扫描功能. 在第一次 ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- Linux之最最最最基础(包括在虚拟机中安装linux系统)
这里是以CentOS 6.5 64bit为例(学习用这个,Kali神马的有兴趣自己研究(这个系统是玩渗透用的)) 一 ---->配置Vmware Workstation 自定义--选择 ...
- mysql show processlist 显示mysql查询进程
1.进入mysql/bin目录下输入mysqladmin processlist; 2.启动mysql,输入show processlist; 如果有 SUPER 权限,则可以看到全部的线程,否则,只 ...
- Kali-Linux之开启ssh服务
需求:通过putty软件ssh到Kali-Linux系统 问题:默认情况下,Kali系统的ssh服务并没有开启 操作方法: 1.编辑sshd_config文件 root@kali:~# vi /etc ...
- call_user_func
(PHP 4, PHP 5) call_user_func — 把第一个参数作为回调函数调用 mixed call_user_func ( callable $callback [, mixed $p ...
- QML鼠标事件实现变色矩形
QML支持鼠标事件处理,我们可以利用这个来实现一个变色矩形示例,代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick. ...