MyBatis項目創建


一、開發環境的准備

總覽:

mybatis搭建過程:
1、導入jar
2、創建mybatis的核心(全局)配置文件mybatis-config.xml,並配置
3、創建映射文件XxxMapper.xml,並配置
4、創建mapper接口,實現兩個綁定:
    (1)接口全限定名要和映射文件的namespace保持一致
    (2)接口中方法名和SQL語句的id保持一致
5、獲取mybatis操作數據庫的會話對象SqlSession,通過getMapper()獲取接口的動態代理實現類
6、測試

詳細過程:

  0、STS選擇Java視圖,新建Java Project.

  1、 導入MyBatis框架的jar包、Mysql驅動包、log4j的jar包
    myBatis-3.4.1.jar
    mysql-connector-java-5.1.37-bin.jar
    log4j.jar
  2、創建mybatis的核心(全局)配置文件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">

<configuration>
    <environments default="development">    <!--environments: 設置連接數據庫的環境,default:設置默認使用的數據庫環境-->
        <environment id="development">      <!--environment: 設置某個具體的數據庫環境,id:數據庫環境的唯一標識-->
            <transactionManager type="JDBC" />  <!--之后會采用Spring的事務管理,type:JDBC或者MANAGED,JDBC表示最原始的方式處理事務-->
            <dataSource type="POOLED">          <!--之后會采用druid數據庫連接池,此為數據源,POOLED|UNPOOLED|JNDI-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/ssm" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
  <!--引入映射文件--> <mappers> <mapper resource="UserMapper.xml" /> </mappers> </configuration>
   1)對於properties和一些不常用的設置
<!-- <properties>
        <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
    </properties> -->
    
    <!-- 
        <properties>:設置或引入資源文件
        resource:在類路徑下訪問資源文件
        url:在網絡路徑或磁盤路徑下訪問資源文件
     -->
    <properties resource="jdbc.properties"></properties>
    
    <!-- 將帶下划線的變量轉化為駝峰形式 user_Name -> userName -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    
    <typeAliases>
        <!-- 
            為類型設置類型別名
            type:Java 類型,若只設置type,默認的別名就是類型,且不區分大小寫
         -->
        <!-- <typeAlias type="com.atguigu.bean.User" alias="u"/> -->
        <package name="com.atguigu.bean"/>
    </typeAliases>
    

  2)Mybatis的xml配置文件中標簽的順序不能出錯

Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, 
 objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

  3)xml的提示功能:

    -1)、聯網
    -2)、配置:preference->xml->xmlCatalog-->add
    (1)PUBLIC ID:-//mybatis.org//DTD Config 3.0//EN
    (2)URI:http://mybatis.org/dtd/mybatis-3-config.dtd
  3、創建映射文件XxxMapper.xml,並配置(如何操作數據庫,寫的是SQL語句,處理實體對象Xxx和表關系)
  4、創建mapper接口,實現兩個綁定:
     (1)接口全限定名要和映射文件的namespace保持一致
     (2)接口中方法名和SQL語句的id保持一致
  例如:接口UserMapper,和映射文件UserMapper.xml(實現調用接口中的方法就執行相應的SQL語句,並得到返回值
package com.atguigu.mapper;

import com.atguigu.bean.User;

public interface UserMapper {

    User getUserByUid(String uid);
    
}
<?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.atguigu.mapper.UserMapper">
    
    <!-- 
        <select>:定義查詢語句
        id:設置SQL語句的唯一標示
        resultType:結果類型,即實體類的全限定名
     -->
    <select id="getUserByUid" resultType="com.atguigu.bean.User">
        select uid,user_name,password,age,sex from user where uid = ${value}
    </select>
    
</mapper>

   5、獲取mybatis操作數據庫的會話對象SqlSession,通過getMapper()獲取接口的動態代理實現類

package com.atguigu.mapper;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.atguigu.bean.User;

public class TestMybatis {

    @Test
    public void test() throws IOException {
        
 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = 
                new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession = sqlSessionFactory.openSession(); //getMapper():會通過動態代理動態生成UserMapper的代理實現類
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        System.out.println(mapper.getClass().getName());
        User user = mapper.getUserByUid("1");
        System.out.println(user);
        //user_name ---> userName
    }

}

  6、測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM