MyBatis介紹

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架構

image.png

查詢用戶表記錄數

使用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">

        <!--jdbc做事務控制  -->

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

       

       

    }

   

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章