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);
    }

}

 

posted @ 2016-10-30 02:01  小虾米lou  阅读(116)  评论(0)    收藏  举报