MyBatis介绍

框架技术

       是一个应用程序的半成品

提供可重用的公共结构

按一定规则组织的一组组件

 

例如写简历:使用模板不用考虑布局、排版等,提高效率,可专心在简历内容上,结构统一,便于人事阅读,新手也可以作出专业的简历。

 

 

使用框架的好处

       不用再考虑公共问题

专心在业务实现上

结构统一,易于学习、维护

新手也可写出好程序

 

 

 

主流框架:

       Strucs2  Hibernate  Spring   Spring MVC  Mybatis

 

 

ORM(Object Relational Mapping)

编写程序的时候,以面向对象的方式处理数据

保存数据的时候,却以关系型数据库的方式存储

 

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。它是一个半自动化的orm框架.

 

 

Jdbc的问题:

       public static void main(String[] args) {

                     Connection connection = null;

                     PreparedStatement preparedStatement = null;

                     ResultSet resultSet = null;

                    

                     try {

                            //加载数据库驱动

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

                           

                            //通过驱动管理类获取数据库链接

                            connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");

                            //定义sql语句 ?表示占位符

                     String sql = "select * from user where username = ?";

                            //获取预处理statement

                            preparedStatement = connection.prepareStatement(sql);

                            //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值

                            preparedStatement.setString(1, "王五");

                            //向数据库发出sql执行查询,查询出结果集

                            resultSet =  preparedStatement.executeQuery();

                            //遍历查询结果集

                            while(resultSet.next()){

                                   System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));

                            }

                     } catch (Exception e) {

                            e.printStackTrace();

                     }finally{

                            //释放资源

                            if(resultSet!=null){

                                   try {

                                          resultSet.close();

                                   } catch (SQLException e) {

                                          // TODO Auto-generated catch block

                                          e.printStackTrace();

                                   }

                            }

                            if(preparedStatement!=null){

                                   try {

                                          preparedStatement.close();

                                   } catch (SQLException e) {

                                          // TODO Auto-generated catch block

                                          e.printStackTrace();

                                   }

                            }

                            if(connection!=null){

                                   try {

                                          connection.close();

                                   } catch (SQLException e) {

                                          // TODO Auto-generated catch block

                                          e.printStackTrace();

                                   }

                            }

 

                     }

 

              }

Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

 

 第一个mybatis程序

Mybatis架构

MyBatis介绍_第1张图片

查询用户表记录数

使用MyBatis的开发步骤

第一步:创建java工程

使用myeclipse创建java工程

 

第二步:加入jar

image.png

第三步:log4j.properties

在resources下创建log4j.properties如下:

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis默认使用log4j作为输出日志信息

第四步:创建MyBatis核心配置文件mybatisConfig.xml

xml version="1.0" encoding="UTF-8"?>

DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

  

    <environments default="development">

        <environment id="development">

       

            <transactionManager type="JDBC" />

           

                <dataSource type="POOLED">

                    <property name="driver" value="com.mysql.jdbc.Driver" />

                    <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo" />

                    <property name="username" value="root" />

                    <property name="password" value="12345678" />

                dataSource>

        environment>

    environments>

   

 configuration>

 

第五步:创建pojo类

    public class user {

    private int id;

    private String userName;

    private int age;  

get set…..

   

}

 

第六步:创建sql映射文件

创建sql映射文件UserMapper.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="cn.sns.dao">

 

<select id="getCount"   resultType="int">

    select count(*) from user

select>

 

mapper>

namespace 命名空间,用于隔离sql语句

 

 

第七步:加载映射文件

mybatis框架需要加载映射文件,将UserMapper.xml添加在mybatis-config.xml,如下

    <mappers><mapper resource="cn/ssm/mapper/UserMapper.xml"/>mappers>

 

第八步:测试

public class test {

    @Test

    public void doTest() throws IOException

    {

        String resource = "mybatisConfig.xml";

        //创建一个文件流

        InputStream in = Resources.getResourceAsStream(resource);

        //创建回话工厂

        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);

       

        //创建回话

        SqlSession sql =  factory.openSession();

       

        //执行sql语句

        int count =  sql.selectOne("cn.sns.dao.getCount");

       

        //打印输出共有多少条记录

        System.out.println(count);

       

       

    }

   

}