MyBatis
jdbc:
优点:简单易学,上手快,非常灵活的构建sql、效率高。
缺点:代码繁琐,难以写出高质量的代码(资源的释放、SQL注入安全性等),开发者关注点多,又要写业务逻辑,又要关注对象的创建和销毁。
Hibemate:
优点:不用写sql语句,可以以面向对象的方式设计和访问,方便理解,他只是对jdbc进行了轻量级的封装。
缺点:处理复杂业务时灵活度差,复杂hql书写困难;
现今大多数业务系统都和数据库打交道,而且通常业务都很复杂,需要关联多个表查询,找到需要的数据。用Hibernate当业务复杂,关联多张表时,hql极其难写,效率也低。用jdbc吧,又不能以面向对象方式思考和使用,开发的代码质量也难以保证。那能否在这两者间找到一个平衡点呢?结合它们的优点,摒弃它们的缺点。
MyBatis 世界上流行最广泛的SQL 映射框架,由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项目。2010 年5 月,将代码库迁致Google Code,并更名为MyBatis。
Mybatis简单例子:
1、创建web工程
2、从https://github.com/mybatis下载mybatis的核心包和依赖包,加到工程里;
3.新建sqlMapConfig.xml配置文件 添加约束dtd和数据库相关配置(关于xml的详细配置说明参考:)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!-- 5 properties 标签:导入外部资源文件或直接定义配置信息 6 .从类路径下资源或 properties 元素的 url 属性中加载的属性第二被读取, 7 它会 覆盖已经存在的完全一样的属性。 8 .作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的 属性, 9 这些属性可能是从 properties 元素体内和资源/url 属性中加载的。 10 --> 11 <properties resource="config/jdbc.properties"> 12 <!-- 也可以在<properties/>标签中定义属性 --> 13 <property name="属性名称" value="属性值"/> 14 </properties> 15 <!-- 环境配置 default:表示默认使用的数据库配置 --> 16 <environments default="test1"> 17 <!-- 环境 --> 18 <environment id="test1"> 19 <!-- 事务管理 JDBC/ MANAGED(自定义)--> 20 <transactionManager type="JDBC"></transactionManager> 21 <!-- 数据源 type:UNPOOLED(不使用)/POOLED(默认)/JNDI(远程)/其他 --> 22 <dataSource type="POOLED"> 23 <property name="driver" value="${jdbc.test1.driver}"/> 24 <property name="url" value="${jdbc.test1.url}"/> 25 <property name="username" value="${jdbc.test1.username}"/> 26 <property name="password" value="${jdbc.test1.password}"/> 27 </dataSource> 28 </environment> 29 <!-- 环境 --> 30 <environment id="test"> 31 <transactionManager type="JDBC"></transactionManager> 32 <dataSource type="POOLED"> 33 <property name="driver" value="com.mysql.jdbc.Driver"/> 34 <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/> 35 <property name="username" value="root"/> 36 <property name="password" value="root"/> 37 </dataSource> 38 </environment> 39 </environments> 40 <!-- 映射文件配置 --> 41 <mappers> 42 <mapper resource="config/mappers/userMapper.xml"/> 43 </mappers> 44 </configuration>
4.新建**Mapper.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.it.domain.User"> <resultMap type="com.it.domain.User" id="BaseResultMap"> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="sex" property="sex" jdbcType="VARCHAR"/> </resultMap> <sql id="base_column_list"> `name`,`sex` </sql> <select id="selectUser" resultMap="BaseResultMap"> SELECT <include refid="base_column_list"></include> FROM `user` </select> </mapper>
5.编写测试类
package com.it.test; import java.io.InputStream; import java.util.List; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Test { public static void main(String[] args) { InputStream in=Test.class.getClassLoader().getResourceAsStream("config/sqlMapConfig.xml"); SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in); List<Object> users = factory.openSession().selectList("selectUser"); System.out.println(users); } }
生于忧患,死于安乐

浙公网安备 33010602011771号