1.读取配置文件:用的就是解析Xml文件的技术  

2.mybatis是支持自己写dao层的,但是没有必要。   
mybatis做的事情: 第一个创建代理对象,第二个在代理对象中调用方法。 3.相同的注解如果和配置文件一同出现的话会报错,即使在Sql***.xml的配置文件中注释掉一个也会出错。 我也不清楚,但是我把Sql***.xml配置文件的配置文件方法注释掉他报错了,不知道注释到注解留下 配置文件方法会不会报错 在之后的学习,老师讲解了一下解析xml的源码,它的运行是先判定有没有resource来确定某个mapper.xml 如果没有才用注解方式判定,我也不知道为什么会报错是因为重复吗,但是我把它注释了啊。 4.mybatis运行过程:基于配置文件执行,利用java反射机制返回想要的结果集 查询的findAll机理: 1.根据配置文件的信息创建Connection对象 注册驱动获取连接 2.获取与处理的对象PreparedSatement 需要SQL语句 3.执行查询 ResultSet 4.结果返回 配置文件中的Mapper对象包含:Sql语句 domainClassPath(封装类的全限定名) 5. class: Resources SqlSessionFactoryBuilder
接口: SqlSessionFactory SqlSession
这四个的作用看源码注释 6.xml方式与注解方式的区别优劣:  ‘
简单用注解 复杂用xml
xml可以利用自定义注解,通过反射,拼出SQL语句,而注解方式怎么动态呢? 7. 进行add和update必须进行session.commit();
session.commit(); 8.如果Bean层不对应数据库的话
第一个解决方案1.起别名 username as userName 运行快
第二个解决方案 <resultMap>的配置 只用写一遍对于开发要优势
二者各有利弊,追求执行效率第一种和数据库和实体类一一对应 追求开发爽就是第二种写一遍可扩展性好
总结:mybatis通过解析xml文件获取各种属性包括driver,url,账号密码,mappers的信息和mapper信息,利用java反射机制生成工厂来生成代理对象来工作 
 //读取配置文件
//绝对路径与相对路径
//读配置文件方法:
//第一个:使用类加载器,他只能读类路径的配置文件
//第二个:使用ServletContext对象的getRealPath()方法
// 创建工厂mybatis使用了构建者模式
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory工厂
System.out.println(inputStream);
//builder构建者
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder(); SqlSessionFactory factory =builder.build(inputStream); //生产SqlSession使用了工厂模式
//使用工厂生产SqlSession对象
SqlSession session =factory.openSession(); //使用SqlSession创建Dao接口代理对象
//使用代理模式 IUserDao userDao =session.getMapper(IUserDao.class); //使用代理对象
List<User> users =userDao.findAll(); System.out.println(users);
for(User user: users)
{
System.out.println(user.toString());
}
//释放资源
session.close();
inputStream.close();

												

最新文章

  1. DataRow映射实体
  2. console使用方法
  3. unittest框架介绍
  4. 实战2--应用EL表达式显示投票结果
  5. .htaccess设置静态资源缓存(即浏览器缓存)
  6. hdu 2846 Repository
  7. 深入理解PHP原理之变量分离/引用
  8. C++中使用多线程
  9. Eclipse快捷键调试
  10. Performance tuning library cache lock &amp; single-task message
  11. 自己动手打造html5星际迷航!
  12. hdu 4521 线段树改点求点的应用
  13. 关于WEB三层架构的思考
  14. windows下安装 mysql 8.0 以上版本以及遇到的问题
  15. 第一册:lesson sixty three。
  16. C++11 并发指南四(&lt;future&gt; 详解二 std::packaged_task 介绍)
  17. 网络七层模型及TCP、UDP,一次HTTP请求都发生了什么
  18. MSSQL优化之————探索MSSQL执行计划
  19. Css设置img属性让图片水平居中/居左/居右的写法
  20. 20155222 2016-2017-2《Java程序设计》课程总结

热门文章

  1. Android简单计时器(转)
  2. 十六、myeclipse导入别人项目报错java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServle异常
  3. 在CentOS中配置java jdk环境
  4. ch13 事件(思维导图)
  5. 仿有道词典App开发
  6. Vue.js面试题
  7. python2.7 操作ceph-cluster S3对象接口 实现: 上传 下载 查询 删除 顺便使用Docker装个owncloud 实现UI管理
  8. Jmockit如何同时mock多个类的静态方法
  9. Python+opencv+pyaudio实现带声音屏幕录制
  10. JS 判断是否为安卓或IOS系统