OMG_By

沉心、静气、学习、总结、进步


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

SqlMapConfig

发表于 2018-04-20 | 分类于 框架

SqlMapConfig.xml中配置的内容和顺序:

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
    • environment(环境属性对象)
      • transactionManager(事务管理)
      • dataSource(数据源)
  • mappers(映射器)
阅读全文 »

Mybatis--原始dao和mapper代理方法

发表于 2018-04-20 | 分类于 框架
  • SqlSessionFactoryBuilder
    通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory。将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。在创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可。

  • SqlSessionFactory
    通过SqlSessionFactory创建SqlSession;由于SqlSessionFactory是线程安全的,应该在应用执行期间都存在,所以在应用运行期间不要重复创建多次,建议使用单例模式。

  • SqlSession
    SqlSession是应用程序和持久层之间执行交互操作的一个单线程对象。SqlSession中提供了许多操作数据库的方法。
    SqlSession是线程不安全的。
    使用完SqlSession要确保在finally块中关闭它。

    阅读全文 »

Mybatis入门程序2

发表于 2018-04-19 | 分类于 框架

在User.xml文件中增加增删改三个功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!--
parameterType 为实体对象
#{} 会使用OGNL来获得同名的值
insert update delete 默认返回的都是影响的条数
-->
<insert id="insertUser" parameterType="Pojo.User">
<!--
如果要求返回刚插入的id值则需要增加<selectKey>

SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键
keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
resultType:指定SELECT LAST_INSERT_ID()的结果类型

//也可以使用以下这种方法
useGeneratedKeys="true" keyProperty="id"

以上两种方法可以自动将id赋值给传入的那个实体相应的属性中去
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name,password)
VALUES (#{name},#{password})

</insert>

<!--更新用户信息,id必须存在-->
<update id="updateUser" parameterType="Pojo.User">
UPDATE user
SET password = #{password}
WHERE id = #{id}
</update>

<!--根据id删除用户-->
<delete id="deleteUser" parameterType="int">
DELETE FROM
user
WHERE id = #{id}
</delete>

阅读全文 »

Mybatis入门程序

发表于 2018-04-19 | 分类于 框架

工程结构

在IDEA中新建一个Java项目。并加入jar包,工程结构如图。

阅读全文 »

Mybatis概述

发表于 2018-04-17 | 分类于 框架

Mybatis介绍

mybatis是一个持久层的框架,是apache下的顶级项目。

mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)。

Mybatis让程序将主要精力放在sql上,通过Mybatis提供的映射方式,只有灵活生成(半自动化,大部分需要程序员编写sql)满足需要SQL语句。

Mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询结果灵活映射成java对象。(输出映射)

阅读全文 »

原生JDBC的问题总结

发表于 2018-04-17 | 分类于 框架

JDBC编程步骤

1.加载数据库驱动
2.创建并获取数据库连接
3.创建jdbc statement对象
4.设置SQL语句
5.设置SQL语句中的参数(使用preparedStatement)
6.通过statement执行sql并获取结果
7.对sql执行结果进行解析处理
8.释放资源(resultSet、preparedStatement、connection)

问题总结

阅读全文 »

Hibernate关系映射

发表于 2018-02-05 | 分类于 框架

Hibernate关系映射

一对多关系映射

数据库:在多的一方添加外键来描述关联关系。
实体对象:在一的一方,增加一个集合用来存放多的一方。在多的一方添加一个一的一方的属性。
映射文件配置:
User.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
<!--
set代表用的什么集合
name代表多的一方的集合的属性名
-->
<set name="carSet">
<!--
key:多的一方的外键名称
-->
<key column="user_id"></key>
<one-to-many class="pojo.Car"></one-to-many>
</set>

Car.hbm.xml

1
2
3
4
5
6
<!--
name:一的一方的属性名
class:一的一方的类全路径
colum:表中的外键外键名称
-->
<many-to-one name="user" class="pojo.User" column="user_id"></many-to-one>

阅读全文 »

Hibernate_一级缓存

发表于 2018-02-04 | 分类于 框架

Hibernate的一级缓存就是Session缓存,Session缓存是一块内存空间,用来存放相互管理的java对象,在Hibernate查询对象的时候,首先会使用对象属性的OID值在Hibernate的一级缓存中进行查找,如果找到匹配OID值的对象,就直接将该对象从一级缓存中取出使用,不会再查询数据库;如果没有找到相同OID值对象,则会去数据库中查找相应数据。当从数据库中查询到所需数据时,该数据信息也会放置到一级缓存中。Hibernate的一级缓存的作用就是减少对数据库的访问次数。

阅读全文 »

Hibernate_持久化类

发表于 2018-02-04 | 分类于 框架

Hibernate持久化类

在Hibernate中持久化的英文名称时Persistent Object(简称PO),PO = POJO+hbm映射配置文件。

编写规则

  1. 必须提供一个无参数的public构造方法。
  2. 所有属性用private修饰,对外提供public的get/set方法。
  3. 在PO类必须提供一个标识属性,与数据库中的主键对应。我们管这属性叫OID。
  4. PO类中的属性尽量使用基本类型的包装类。
  5. PO类不能使用final修饰符。
    阅读全文 »

Hibernate主键生成策略

发表于 2018-02-04 | 分类于 框架
  1. increment
    用于long、short、int类型,由Hibernate自动以递增的方式生成唯一标识符,每次增量为1。只有当没有其他进程向同一张表中插入数据时才可以使用,不能在集群环境下使用。适用于代理主键。

  2. identity
    采用底层数据库本身提供的主键生成标识符,条件是数据库支持自动增长数据类型。在DB2、MySQL、MS SQL Server、Sybase和HypersonicSQL数据库中可以使用该生成器,该生成器要求在数据库中把主键定义成为自增长类型。适用于代理主键。

  3. sequence
    Hibernate根据底层数据库序列生成标识符。条件是数据库支持序列。适用于代理主键。

  4. native
    根据底层数据库对自动生成表示符的能力来选择identity、sequence、hilo三种生成器中的一种,适合跨数据库平台开发。适用于代理主键。

  5. uuid
    Hibernate采用128位的UUID算法来生成标识符。该算法能够在网络环境中生成唯一的字符串标识符,其UUID被编码为一个长度为32位的十六进制字符串。这种策略并不流行,因为字符串类型的主键比整数类型的主键占用更多的数据库空间。适用于代理主键。

  6. assigned
    由Java程序负责生成标识符,如果不指定ID元素的generator属性,则默认使用该主键生成策略。适用于自然主键。

1…8910…14
OMG_By

OMG_By

133 日志
20 分类
36 标签
RSS
GitHub E-Mail
友链
  • 戎码人生
  • JosemyQAQ
  • Just do it !
  • ACM各大OJ题集
  • django大神博客
© 2020 OMG_By