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可以 ...
随机推荐
- C# 反射 设置字段值无效的解决办法
FieldInfo.SetValue的原型是:void SetValue(object obj, object value)当你传递一个值类型(结构是值类型)的时候,它要转化成object,也就是要装 ...
- 初学android:四大组件之contentprovider
一.ContentProvider的概念ContentProvider:为存储和获取数据提供统一的接口.可以在不同的应用程序之间共享数据.Android已经为常见的一些数据提供了默认的ContentP ...
- 错误源:WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'. Please add a ScriptResourceMapping named jquery(case-sensitive).
Server Error in '/' Application. WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping ...
- Sytem 表空间很大
SYSTEM表空间使用率达到了99%, 经查出,是审计表AUD$占用绝大部分的空间. -- 占用表空间system对象大小排名 SELECT * MB FROM DBA_SEGMENTS WHERE ...
- jQuery 源码分析6: jQuery 基本静态方法(二)
jQuery.extend({ // 遍历obj的所有值 // args 这参数只能内部调用的会用到 // 注意到,如果回调函数调用失败会直接跳出并中止遍历 // 当有args数组时,使用apply调 ...
- Sql 解释
SQL(Structured Query Language) 结构化查询语言,虽然是查询语言,也是一种编程语言,但是执行查询操作. 根据数据的操作对象,可以将SQL语句分为几类. DDL(Data D ...
- VIM 同义词
vim-online-thesaurus A Vim plugin for looking up words in an online thesaurus, Now thesaurus.com 一.原 ...
- 禁用Linux bash rm --force
防止无意的Linux bash rm --force 二.禁用rm -rf 因为rm -rf 删除文件的时候,经常会不小心将系统文件或者多个有用的目录删除掉.有两种方法:1,每次删除都用-i(inte ...
- hdu 1250 Hat's Fibonacci(高精度数)
// 继续大数,哎.. Problem Description A Fibonacci sequence is calculated by adding the previous two membe ...
- 要做一款APP-解放双手
对方打字或发语音,我可以选择看屏幕或者听. 我说话,能够转化为文字.不需要点击开始按钮的那种.