笔记之_java整理ORM框架
Posted 莫轩ASL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记之_java整理ORM框架相关的知识,希望对你有一定的参考价值。
MyBatis的xml文件中处理特殊字符 方法一: <<小于号 > >大于号 &&和 '’单引号 ""双引号 方法二: 用<![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>