笔记之_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{
        //1、加载mybatis-config.xml文件 
        InputStream in=MyBtaisUtil.class.getResourceAsStream("/mybatis-config.xml");
        //2、生成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>

 

posted @ 2017-11-19 16:41  莫轩ASL  阅读(12488)  评论(0编辑  收藏  举报