1. 程式人生 > >MyBatis學習(一)簡介及入門案例

MyBatis學習(一)簡介及入門案例

結果集 提交 ace 支持 nag 實例 exce 空間 cti

1.什麽是MyBatis?

  MyBatis是一個支持普通SQL查詢,存儲過程,和高級映射的優秀持久層框架。MyBatis去掉了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解進行配置和原始映射,以將接口和Java的POJO映射成數據庫中的記錄。

  MyBatis作為持久層框架,主要思想是將程序中大量的SQL語句剝離出來,配置在配置文件中,以實現SQL的靈活配置。這樣的好處是將SQL語句和程序代碼分離,可以在不修改代碼的前提下,直接在配置文件中修改SQL。

2.MyBatis和Hibernate的區別。

  Hibernate是以一種“全自動”的ORM框架,它實現了數據庫表和POJO之間的映射,以及SQL的自動生成。

  MyBatis相對於hibernate來說,是一種“半自動化”的ORM框架,MyBatis的著力點在pojo和sql之間的映射,MyBatis雖然也實現了數據庫表和pojo之間的映射,但是並不能在運行期間生成SQL語句,需要程序員在配置文件中配置,將SQL需要的參數和返回的結果字段映射到指定POJO。

  Mybatis以SQL開發的工作量和數據庫移植上的讓步,為系統設計提供了更大的自由空間。

3.入門案例

3.1創建一個項目,導入數據庫連接、MyBatis的jar包

技術分享

3.2創建一個數據庫-mybatis,創建一個表t_user

CREATE TABLE `t_user` (
  `id` 
int(11) NOT NULL AUTO_INCREMENT, `username` varchar(18) NOT NULL, `sex` char(2) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.3創建一個User類

public class User {

    private Integer id;
    private String username;
    private String sex;
    private
Integer age; public User(String username, String sex, Integer age) { super(); this.username = username; this.sex = sex; this.age = age; } public User() { super(); } //省略get、set方法 }

3.4配置這個pojo對應的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">
 
 <!-- namespace指用戶自定義的命名空間 -->
 <mapper namespace="com.dj.mapper.UserMapper">
     <!-- 
         id="save"是唯一的標示符
        parameterType屬性指明插入時使用的參數類型
        useGeneratedKeys="true"表示使用數據庫的自動增長策略
      -->
     <insert id="save" parameterType="com.dj.pojo.User" useGeneratedKeys="true">
         insert into t_user(username,sex,age) values(#{username},#{sex},#{age})
     </insert>
 </mapper>

3.5配置mybatis-config.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">
  <!--  XML 配置文件包含對 MyBatis 系統的核心設置 -->
<configuration>
    <!-- 指定 MyBatis 所用日誌的具體實現 -->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!-- 環境配置,即連接的數據庫。 -->
    <environments default="mysql">
    <environment id="mysql">
    <!--  指定事務管理類型,type="JDBC"指直接簡單使用了JDBC的提交和回滾設置 -->
      <transactionManager type="JDBC"/>
      <!--  dataSource指數據源配置,POOLED是JDBC連接對象的數據源連接池的實現。 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <!-- mappers告訴了MyBatis去哪裏找持久化類的映射文件 -->
  <mappers>
      <mapper resource="com/dj/mapper/UserMapper.xml"/>
  </mappers>
</configuration>

3.6編寫測試類

public class MyBatisTest {
    
    @Test
    public void save() throws Exception{
        //讀取mybatis-config.xml
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        //初始化mybatis,創建一個sqlsessionfactory類的實例
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //創建一個SqlSession實例
        SqlSession sqlSession = factory.openSession();
        //創建一個User對象
        User user = new User("王五", "男", 12);
        sqlSession.insert("com.dj.mapper.UserMapper.save", user);
        sqlSession.commit();
        sqlSession.close();
    }

}

運行後可以看到結果

技術分享

要想控制臺顯示sql語句,要導入log4j的jar包和log4j.properties文件。

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.dj.mapper.UserMapper=DEBUG
# 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
 

控制臺有如下顯示

技術分享

源碼下載路徑:https://files.cnblogs.com/files/dj-blog/MyBatisTest.zip

MyBatis學習(一)簡介及入門案例