笔记之_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框架
看官⽅⽂档:/mybatis-3/zh/getting-started.html
看博客园
Mybatis框架:⽀持定制化 SQL、存储过程以及⾼级映射的优秀的持久层框架。
MyBatis 避免了
1)、JDBC 代码 (连接数据库,关闭数据库,打开PreparedStatement)
2)、⼿动设置参数 ()
3)、⼿动获取结果集(()){ ..填充值到对象中 })
调⽤⽅法:
SqlSession session = MyBtaisUtil.openSession();
MajorMapper majorMapper = Mapper(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⽂件配置:
#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
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 "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 读取数据加配置⽂件 jdbc.properties -->
<properties resource="jdbc.properties"/>
<settings>
<!-- 在控制台打印sql语句 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 对实体类可以少写完整路径 -->
<typeAliases>
<package name="ity"/>
</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、加载l⽂件
InputStream in=ResourceAsStream("/l");
//2、⽣成sessionFactory
sessionFactory=new SqlSessionFactoryBuilder().build(in);
}
public static SqlSession openSession(){
return sessionFactory.openSession();
}
public static SqlSession openSession(boolean autoCommit){
return sessionFactory.openSession(autoCommit);
jpa mybatis}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.wisezone.dao.MajorMapper">
<insert id="insert" parameterType="ity.Major"
useGeneratedKeys="true" keyProperty="majorId"
flushCache="true">
insert into major (majorName) values (#{majorName})
</insert>
<!-- 更新 -->
<update id="update" parameterType="ity.Major">
update major set majorName=#{majorName}
where majorId=#{majorId}
</update>
<!-- 简单的查询 -->
<select id="findById" parameterType="int" resultType="ity.Major">
select * from major where majorId=#{majorId}
</select>
<!-- 根据条件查询 -->
<select id="find" resultType="ity.Major">
select * from major
<where>
<if test="majorName!=null">
and majorName like #{majorName}
</if>
</where>
</select>
</mapper>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论