Mybatis学习笔记(1)之了解MyBatis

传统JDBC的问题

1.        数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

2.        硬编码

1)        SQL语句硬编码

2)        preparedStatement中设置参数硬编码

3)        resutSet中遍历结果集数据时硬编码

Mybatis介绍

1.        Mybatis:是一个持久层框架,主要使程序员将精力放到SQL上,通过Mybatis提供的映射关系完成数据库的操作。

2.        框架:

Mybatis学习笔记(1)之了解MyBatis_第1张图片

3.        Mybatis项目搭建

Mybatis学习笔记(1)之了解MyBatis_第2张图片

1)        Log4j.properties

Mybatis学习笔记(1)之了解MyBatis_第3张图片

SqlMapConfig.xml

Mybatis的环境配置文件,包括数据源、事务等

Mybatis学习笔记(1)之了解MyBatis_第4张图片

Map映射文件

Sql语句的配置

1.        映射文件是用于操作实体类的配置文件,如:User.java对应UserMapper.xml对应,其中xxxMapper.xml包含对相应User.java实体类对象的SQL操作。

2.        在xxxMapper.xml映射文件中配置sql语句:以Selecte语句为例

Mybatis学习笔记(1)之了解MyBatis_第5张图片

1)        namespace:命名空间

2)        id:标识映射文件中的sql语句

3)        parameterType:指定输入参数的类型

4)        resultType:指定sql输出结果所映射的java对象类型,无论结果返回的是单挑记录还是多条记录。

5)        #{}和${}

a)        在sql语句中占位符#{id}:其中id表示接受输入的参数,参数名为id。

#{}接收输入参数,类型可以是简单类型,pojo、hashmap。

简单类型:#{}中可以写成value或其它名称。

#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

b)        ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}

${}接收输入参数,类型可以是简单类型,pojo、hashmap。

简单类型,${}中只能写成value。

${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

主键的细节

1.        自增长

1)        Mysql主键为自增长时:执行insert提交前需要先自动生成一个主键。

2)        使用LAST_INSERT_ID()

Mybatis学习笔记(1)之了解MyBatis_第6张图片

a)        使用selectKey标签

b)        keyProperty:将主键id设置到parameterType所指定对象的相应属性中

c)        order:指定select LAST_INSERT_ID()相较于insert语句的执行顺序

d)        resultType:指定select LAST_INSERT_ID()的结果类型

2.        非自增长

1)        数据库id的数据类型:使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。

2)        相较于insert语句的执行顺序:先通过uuid()查询到主键,将主键输入 到sql语句中,执行uuid()语句顺序相对于insert语句之前执行。即:


commit()事务提交

除了查询以外,其他的都需要commit()

你可能感兴趣的:(mybatis)