Mybatis

这篇博客详细介绍了Mybatis框架,从Jdbc编程的问题出发,阐述了Mybatis的出现和工作原理。内容涵盖Mybatis的全局配置文件SqlMapConfig.xml、Mapper.xml映射文件、SqlSession的使用方法,以及如何通过动态代理方式开发DAO。此外,还讨论了Mybatis与Hibernate的区别,以及在实际开发中如何选择。博客最后讲解了如何处理主键返回、动态SQL、ResultType和ResultMap的区别等问题。
摘要由CSDN通过智能技术生成

Mybatis 第一天课堂笔记

Mybatis课程安排:

 

第一天:

Jdbc编程中的问题?

Mybatis的框架原理(重点

Mybatis的第一个程序:

         实现用户信息的增、删、改、查。

Mybatis如何解决jdbc编程的问题。

与hibernate不同。

 

mybatis开发dao两种方法:(重点

原始的dao开发方法(接口和接口实现)

         Mapper动态代码方法

 

Mybatis的配置文件:

         SqlMapConfig.xml(全局配置文件)

         XXXXXMapper.xml(映射文件,重点

 

Mybatis动态Sql(重点

 

resultType(重点掌握)和resultMap区别。

 

 

第二天:

 

Mybatis关联查询:

         一对一查询

         一对多

         多对多

 

Mybatis的缓存

         一级缓存

         二级缓存

延迟加载

 

Mybatis和springmvc整合(重点

原始的dao开发方法(接口和接口实现)

         Mapper动态代码方法

 

 

Mybatis逆向工程(由数据库表生成类文件和映射文件)

 

 

1      Jdbc编程中的问题

 

1.1    写一个程序

 

目标:

1、  通过jdbc程序找出当中的问题

2、  重视jdbc编程,企业在技术选型时对于小型的项目或性能要求较高的项目,优先选用jdbc开发。

 

准备开发环境:

Jdk1.7.72

Eclipse indigo(3.7)

Mysql5.1

 

运行环境:

Mysql5.1数据库驱动

创建mysql数据库:

 

 

代码如下:

 

public classJdbcTest {

  

   //定义sql语句,根据名称查询用户表的记录

   private static String sql = "SELECT * FROM USER WHERE username =  ?";

  

   public static void main(String[] args) throws SQLException {

     

      //数据库连接

      Connectionconnection = null;

      //预编译statement

      //好处:防止 sql注入,提高数据的性能

      PreparedStatementpreparedStatement = null;

      //结果集

      ResultSetresultSet = null;

     

      try {

        

         //加载数据库驱动

         Class.forName("com.mysql.jdbc.Driver");

        

         //连接数据库

         connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis", "root","mysql");

        

         //构造preparedStatement

         preparedStatement= connection.prepareStatement(sql);

         //preparedStatement中占位符的位置设置参数

         preparedStatement.setString(1,"张三");

        

         //发起数据库查询请求,得到结果集

         resultSet= preparedStatement.executeQuery();

         //遍历查询结果

        

         while(resultSet.next()){

            int id = resultSet.getInt("id");

            Stringusername = resultSet.getString("username");

            Datebirthday =resultSet.getDate("birthday");

            System.out.println(id+"   "+username+"   "+birthday);

         }

        

        

      }catch(Exception e) {

         e.printStackTrace();

      }finally{

         //释放资源

         if(resultSet!=null){

            resultSet.close();

         }

         if(preparedStatement!=null){

            preparedStatement.close();

         }

         if(connection!=null){

            connection.close();

         }

      }

     

     

   }

 

}

 

 

 

1.2    总结问题

1、  将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译。系统可维护性不高。

设想如何解决?

能否将sql单独配置在配置文件中。

 

2、  数据库连接频繁开启和释放,对数据库的资源是一种浪费。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值