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可以 ...
随机推荐
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- 浅析foreach原理
在日常开发工作中,我们发现很多对象都能通过foreach来遍历,比如HashTable.Dictionary.数组等数据类型.那为何这些对象能通过foreach来遍历呢?如果写一个普通的Person类 ...
- WEB系统技术开发方向
1. UI框架:要可以结合jquery+自定义服务器控件开发一套UI框架: 2.WEB报表设计器:用js开发一套可以自定义报表设计器: 3.WEB自定义表单+工作流设计器: 4.WEB打印组件: 5. ...
- C# TcpClient 连接状态检测
C# TcpClient在连接成功后无法检测连接状态,即使对方关闭了网络连接.以下扩展可检测连接状态: public static class TcpClientEx { public static ...
- 经历:如何设置jquery easyui中下拉框不可编辑
今天,在项目中碰到一个这样的问题,当选择按钮时候,查询条件是可以输入的,否则,表单框是不可用的[图1].但是,批量查询中的船名和装港用到了自动配置,即jquery-easyui中的combox的配置. ...
- IIS7 发现无法显示ewebeditor编辑器成空白
vs2003写的网站,很早了,编辑器用的是ewebeditor,每次更换程序编辑器都会出问题.今天记录一下. 内部老网站在Windows2003 iis6上运行的. 现在要迁移到2008上64位.08 ...
- 禁用Linux bash rm --force
防止无意的Linux bash rm --force 二.禁用rm -rf 因为rm -rf 删除文件的时候,经常会不小心将系统文件或者多个有用的目录删除掉.有两种方法:1,每次删除都用-i(inte ...
- CruiseControl.NET : Configuration Preprocessor
Original link: http://build.sharpdevelop.net/ccnet/doc/CCNET/Configuration%20Preprocessor.html http: ...
- 九度OJ 1104 整除问题
题目地址:http://ac.jobdu.com/problem.php?pid=1104 题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2 ...
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
public interface Sing { public static final String eyecolor="black"; public void sleep(); ...