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 学习入门的更多相关文章

  1. MyBatis学习-入门

    eclipse + jdk 1.8 + mybatis 1.数据库准备 安装mysql数据库,建立数据库test,在test库下建立测试的表 CREATE TABLE `t_user` ( `id` ...

  2. MyBatis学习-入门篇

    一.MyBatis 介绍 MyBatis 是支持普通的 SQL 查询,存储过程和高级映射的优秀持久层框架,可以进行更为细致的 SQL 优化,减少查询字段.几乎消除了所有的 JDBC 代码和参数的手工设 ...

  3. Mybatis学习—入门

    总结自 Mybatis官方中文文档 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手 ...

  4. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  5. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  6. Mybatis学习笔记之一(环境搭建和入门案例介绍)

    一.Mybatis概述 1.1 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了go ...

  7. MyBatis学习总结-MyBatis快速入门的系列教程

    MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...

  8. Mybatis基础入门学习

    Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...

  9. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

随机推荐

  1. ASP多行多列又一个方法

    <table border=1 width="200"> <% col=4 '列数 i=1 Do While i<=100 If i Mod col=1 T ...

  2. sql 复习

    创建表 #设置外键 create table example3(id int primary key, stu_id int, course_id int, constraint c_fk forei ...

  3. Objective-C 学习笔记(Day 3,下)

    ------------------------------------------- 封装概念及其原理 一个Gun类的例子来详细说明这一环节: #import <Foundation/Foun ...

  4. VS2010 VS2012 如何连接Oracle 11g数据库

    oracle是开发者常用的数据库,在做.NET开发是,由于Vs自带的驱动只能连接oracle 10g及以下版本,那么如何连接oracle 11g呢? 工具/原料   事先安装VS2010或者VS201 ...

  5. jQuery 源码分析5: jQuery 基本静态方法(一)

    jQuery在初始化过程中会为自己扩展一些基本的静态方法和属性,以下是jQuery 1.11.3版本 239 ~ 564行间所扩展的静态属性和方法   jQuery.extend({ // 为每个jQ ...

  6. FreeMarker-Built-ins for numbers

    http://freemarker.org/docs/ref_builtins_number.html#topic.extendedJavaDecimalFormat Page Contents ab ...

  7. 306573704 Char型和string型字符串比较整理(转)

    1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...

  8. String Shifting

    我们规定对一个字符串的shift操作如下:略去.shift(string, x) = string(0 <= x < n). 分析:一看这题,这不很简单么,直接模拟判断,但是这套路有这么简 ...

  9. Update msi using vbscript

    参考: http://stackoverflow.com/questions/1609250/how-do-i-add-update-a-property-inside-an-msi-from-the ...

  10. n个骰子的点数

    把n个骰子扔在地上,所有骰子朝上的一面的点数之和为s.输入n,打印出s的所有可能的值和出现的概率. 解法一:基于递归求骰子点数. /////////////////基于递归求骰子点数///////// ...