mybatis:
为什么要有mybatis呢?我们之前手写数据层,连接关闭数据库太过于平凡,就算是用了连接池,我们还要单独写一些语句如:
public Productitem updateProductByid(String pid)throws SQLException {
QueryRunner runner =new QueryRunner(DataSourceUtils.getDataSource());
String sql="select * from product where pid=?";
Productitem pro= runner.query(sql,new BeanHandler(Productitem.class),pid);
return pro;
}
所以mybatis省了我们不少的事情。
现在配置一下mybatis,我将上面的第一个springmvc项目拿过来配。
在web.xml将context-param里的applicationContext.xml换成spring_*.xml
然后下config文件下面建3个.xml文件和一个properties文件
spring_dao.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
spring_mybatis.xml:
springmvc.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
db.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
jdbc.username=数据库账号
jdbc.password=数据库密码
##?useUnicode=true&characterEncoding=utf-8
注意:上面的jdbc.ur的test是数据库名字。
然后启动:idea;
接着当我在网页上输入项目地址的时候,却报了500错误,说是找不到mapper。我想,应该是扫描不到mapper的xml文件。然后,我去target这个目录里面找果然没有mapper的xml文件。
然后我去查了一下spring_dao.xml文件,有没有扫描到。
于是我,百度了一下,原来是pom.xml文件没有去配置扫描。
于是我就给pom.xml加上下面这句话:
-->
然后输入http://localhost:8080/maven_spring_springmvc_war_exploded/stringfirst
确实出现了json数据
因为想写,然后重现问题,但是当我删掉这句话,然后又重新启动时:
竟然没有错误。。。。
我真的搞不懂为什么,看着跟之前一样的的代码,却运行不一样的结果,我迷了。
难道程序也有记忆能力?
哪位大佬解释一下?
然后我将,target里面的mapper.xml文件删了,还是一样的结果。于是。我就整个的吧target删了。还是可以运行。然后我换了个浏览器,还是可以运行处结果
我放弃了,哪位大佬知道,告知一下。谢了谢了。
mybatis的配置还是蛮好配的,用起来很省事。但是我看着国外都用的Hibernate。我也没用过Hibernate,也不太清楚。
Mybatis为什么能实现xml文件就能访问数据库这些事情呢?就是因为它封装了jdbc的一系列访问数据库的操作,然后,映射到xml文件。只要你在xml文件写一些sql语句就行。
select*from course where cno=#{i}
id:是接口的方法名;
resultType:是返回的实体类;
parameterType:是输入进的类型。
总结:MyBatis框架的优点:
1)与JDBC相比,减少了50%以上的代码量。
2)MyBatis是最简单的持久化框架,小巧并且简单易学。
3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
4)提供XML标签,支持编写动态SQL语句。
5)提供映射标签,支持对象与数据库的ORM字段关系映射。
MyBatis框架的缺点:
1)SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求。
2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
摘自:关于mybatis框架的总结【转载】 - 救赎者 - 博客园