zoukankan      html  css  js  c++  java
  • Mybatis学习笔记(一) 之框架原理

    原生态JDBC编程中问题总结

    1、单独使用jdbc连接数据库

    maven依赖包:

            <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.31</version>
            </dependency>    
    

    使用代码

    package com.test;
    import java.sql.*; 
    
    public class jdbc {
    	public static void main(String[] args) {		
    		//数据库连接
    		Connection connection = null;
    		//预编译的statement
    		PreparedStatement preparedStatement = null;
    		//结果集
    		ResultSet resultSet = null;		
    		try{
    			//加载数据库驱动
    			Class.forName("com.mysql.jdbc.Driver");
    			//通过驱动管理类获取数据库链接,用户名及密码
    			connection = DriverManager.getConnection("jdbc:mysql://192.168.6.12:3306/test","dev","mybatis");
    			//定义sql语句   ?表示占位符
    			String sql = "select * from user where userName= ?";
    			//获取预处理statement
    			preparedStatement = connection.prepareStatement(sql);
    			//设置参数,第一个参数为sql语句中参数的序号,第二个参数为设置的参数值
    			preparedStatement.setString(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(Exception e){
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }
    

    2、所遇到问题

    1).数据库连接,使用时就创建,但是不使用立即释放,导致对数据库进行频繁的开启和关闭,造成数据库资源浪费,性能下降。

      解决:使用数据库连接池管理数据库链接

    2).将sql语句硬编码到java代码中,及sql语句也写在代码中,如果sql语句需要修改,需要重新编译java代码,不利于系统维护。

      解决:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

    3).向PreparedStatement中设置参数,对占位符(?)位置和设置参数值也是硬编码在java代码中。不利于维护。

      解决:也是将sql和占位符全部配置在xml中

    4).从resutSet中遍历结果集数据时,存在硬编码,将获取标的字段进行硬编码,不利于维护。

      解决:将查询结果集,自动映射成java对象。

     Mybatis框架

    Mybatis是一个持久层架构,是apache下的顶级项目, 他是让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要的sql。

    mybatis可以将向PreparedStatement中输入参数自动进行输入映射,将程序查询结果集灵活的映射出java对象(输出映射)

    mybatis代码下载地址:https://github.com/mybatis/mybatis-3/releases

    1、mybatis框架

    • SqlMapConfig.xml:MyBatis全局配置文件(数据源、事务等mybatis运行环境),不是固定名称;

    • mapper.xml:映射关系(配置SQL语句);

    • SqlSessionFactory:创建会话(SqlSession);

    • SqlSession:操作DB(CRUD),面向用户的接口;

    • Excutor:执行器(SqlSession内部通过执行器操作DB),接口(有2个实现类,基本执行器和缓存执行器);

    • mappedstatement:底层封装对象(sql语句、输入参数、结果类型)。

    参考

    1、链接:http://www.icoolxue.com/album/show/216/

    2、深入理解mybatis原理:http://blog.csdn.net/column/details/mybatis-principle.html?page=1

  • 相关阅读:
    MySQL Workbench的安全更新模式
    IEnumerable<T>和IQueryable<T>区分
    Google 网站打不开
    使用 MVVMLight 命令绑定(转)
    使用 MVVMLight 绑定数据(转)
    安装/使用 MVVMLight(转)
    ?? 运算符(C# 参考)
    REST风格URL
    node+mysql 数据库连接池
    理解mysql执行多表联合查询
  • 原文地址:https://www.cnblogs.com/airsen/p/Mybatis.html
Copyright © 2011-2022 走看看