筆記之_java整理ORM框架

MyBatis的xml文件中處理特殊字符
方法一:
&lt;<小於號                                           
&gt; >大於號
&amp;&&apos;’單引號
&quot;"雙引號
方法二:
用<![CDATA[ ]]>進行說明
<![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00']]>  
ORM:
對象關係映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序技術.
用於實現面向對象編程語言裏不一樣類型系統的數據之間的轉換  。從效果上說,它實際上是建立了一個可在編程語言裏使用的--「虛擬對象數據庫」。
使用反射能夠作到,但有如下考慮:
零基礎的人能懂嗎?
它寫的代碼能支持全部數據庫嗎?
對對象中的對象可以自動去填充嗎?
java中經常使用的ORM框架有哪些?
hibernate:全自動的框架(不懂數據庫的人也能操做)
Mybatis:半自動的框架(懂數據庫的人 才能操做)  必需要本身寫sql
JPA:JPA全稱Java Persistence API、JPA經過JDK 5.0註解或XML描述對象-關係表的映射關係,是Java自帶的框架
如何來學習ORM框架
       看官方文檔:http://www.mybatis.org/mybatis-3/zh/getting-started.html
看博客園
Mybatis框架:支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。
   MyBatis 避免了
     1)、JDBC 代碼  (鏈接數據庫,關閉數據庫,打開PreparedStatement)
     2)、手動設置參數 (prep.setString........)
     3)、手動獲取結果集(while(rst.next()){  ..填充值到對象中 })
調用方法:
SqlSession session = MyBtaisUtil.openSession();
MajorMapper majorMapper = session.getMapper(MajorMapper.class);
int result = majorMapper.insert(major);
mybatis中設定映射關係
N:1多對一
 <association property="java中的變量名" javaType="JAVA實體類型">
       <id property="id" column="數據庫表的主鍵"/>
       <result property="username" column="author_username"/>   </association>

1:N  一對多
<collection property="posts" ofType="Post">
       <id property="id" column="post_id"/>
 </collection>
resultMap
constructor - 類在實例化時,用來注入結果到構造方法中 
idArg - ID 參數;標記結果做爲 ID 能夠幫助提升總體效能
arg - 注入到構造方法的一個普通結果
id – 一個 ID 結果;標記結果做爲 ID 能夠幫助提升總體效能
result – 注入到字段或 JavaBean 屬性的普通結果
association – 一個複雜的類型關聯;許多結果將包成這種類型 
嵌入結果映射 – 結果映射自身的關聯,或者參考一個 
collection – 複雜類型的集 
嵌入結果映射 – 結果映射自身的集,或者參考一個
discriminator – 使用結果值來決定使用哪一個結果映射 
case – 基於某些值的結果映射 
嵌入結果映射 – 這種情形結果也映射它自己,所以能夠包含不少相 同的元素,或者它能夠參照一個外部的結果映射。 
注意
  <select      查詢單表   resultType=」」>
  <select      鏈接查詢   resultMap=」自定義返回結果」>
控制檯輸出sql的log4j.properties文件配置:
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
MyBatis.properties配置:
<?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>
    <!-- 讀取數據加配置文件   jdbc.properties -->
    <properties resource="jdbc.properties"/>   
     <settings>
       <!-- 在控制檯打印sql語句 -->
        <setting name="logImpl" value="LOG4J"/>
     </settings>     
     <!-- 對實體類能夠少寫完整路徑 -->
     <typeAliases>
        <package name="com.wisezone.entity"/>
     </typeAliases>  
    <!-- 配置環境變量,裏面能夠配置N個數據庫 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 讓mybaits來管理你所定義的全部自定義的文件  -->
    <mappers> 
        <!-- 搜索 java接口 -->
         <package name="com.wisezone.dao"/> 
    </mappers>
</configuration>
MyBatisUtil.java內容:
public class MyBtaisUtil {
    private static SqlSessionFactory  sessionFactory=null;  //二級緩存,用它來產生SqlSession( 打開數據庫,建立
PreparedStatement)
    static{
        //一、加載mybatis-config.xml文件 
        InputStream in=MyBtaisUtil.class.getResourceAsStream("/mybatis-config.xml");
        //二、生成sessionFactory
        sessionFactory=new SqlSessionFactoryBuilder().build(in);        
    }    
    public static SqlSession openSession(){
        return  sessionFactory.openSession();
    }
    public static SqlSession openSession(boolean autoCommit){
        return sessionFactory.openSession(autoCommit);
    }
}
MarjorMapper.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.wisezone.dao.MajorMapper">
        <insert id="insert" parameterType="com.wisezone.entity.Major"
          useGeneratedKeys="true" keyProperty="majorId"
         flushCache="true">
           insert into major (majorName) values (#{majorName})
      </insert>
       <!-- 更新 -->
      <update id="update" parameterType="com.wisezone.entity.Major">
          update major set majorName=#{majorName}
          where majorId=#{majorId}
      </update>
      <!-- 簡單的查詢  -->
      <select id="findById" parameterType="int" resultType="com.wisezone.entity.Major">
          select * from major where majorId=#{majorId}
      </select>
       <!-- 根據條件查詢  -->
       <select id="find" resultType="com.wisezone.entity.Major">
          select * from major           
          <where>
               <if test="majorName!=null">
                  and  majorName like #{majorName}
               </if>
          </where>
       </select>
</mapper>
相關文章
相關標籤/搜索