mybatis为啥直接返回值就返回空指针了_【Java笔记】039天,框架MyBatis

e6b45bae5afa24e4e139b7dd0ba7b3a1.png

今天是学习java 的39天。

今天主要学习了Java的框架的概念,着重讲了MyBatis框架。

框架的概念

① 框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程.

② 框架其实是一个半成品, 以连接数据库为例, 连接数据库 使用的驱动, url, 用户名, 密码 必须告知框架. 多数会使用 xml 作为框架的配置文件.

③ 框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。

④在使用框架开发代码时, 需要编写配置文件, 代码的编写反而会减少.

⑤框架都是第三方提供的, 提供的都是 jar 包. 因此, 使用框架前, 必须将框架涉及的 jar 包导入项目中.

⑥JAVA框架可以分为三层:表示层,业务层和物理层。

常见的 java 开发的框架

a)MyBatis, ORM 框架, 底层是对 jdbc 进行了封装

b)Spring, 是一个容器

c)SpringMVC, 分层框架

d)Struts2, 功能类似于 SpringMVC

e)Hibernate, 功能类似于 MyBatis

MyBatis 框架简介

a)MyBatis 是一个 ORM 框架, 用于操作数据库, 底层是对 jdbc 进行的封装.

b)MyBatis 的前身是 iBatis, 是 Apache 下的一个开源项目. 现在被迁移到了 GitHub 上.

搭建MyBatis环境

MyBatis 核心 jar :mybatis-3.2.7.jar

1c4248cfa5859321878a62cbadfb11b6.png

650413ecee31ee6bb7783a13203e88f3.png
mysql驱动 jar 包:mysql-connector-java-5.1.47.jar

MyBatis 核心配置文件

是一个 xml 文件, 命名无要求, 位置无要求, 一般叫mybatis.xml, 放在 src 目录下.

dtd:MyBatis 官方提供了 dtd 约束, 方便 xml 的编写

示例:网络不良也可以不使用网络连接,使用本地预先准备好的文件

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

关联 mybatis 配置文件的 dtd 约束

007f6eb22df04d798efb590bfc4632f8.png

MyBatis核心配置文件中常用标签:

1.1 <configuration>

这是配置文件的根元素, 所有的其他元素都要在这个标签下使用.

1.2 <environments>

用于管理所有的环境, 并可以指定默认使用哪个环境. 通过default 属性来指定.

1.3 <environment>

用于配置环境. id 属性用于唯一标识当前环境

1.4 <transactionManager>:

用于配置事务管理器

1.4.1 type 属性

用于指定 MyBatis 采用何种方式管理事务

a) JDBC: 表示 MyBatis 采用与原生 JDBC 一致的方式管理事务

b) MANAGED: 表示将事务管理交给其他容器进行, 例如 Spring

1.5 <DataSource>

用于配置数据源, 设置 MyBatis 是否使用连接池技术, 并且配置数据库连接的四个参数

1.5.1 type 属性

用于设置 MyBatis 是否使用连接池技术

a) POOLED, 表示采用连接池技术

b) UNPOOLED, 表示每次都会开启和关闭连接, 不使用连接池技术

c) JNDI, 使用其他容器(例如 Spring)提供数据源

1.6 <property>

用于配置数据库连接参数(driver, url, username, password)

1.7 <mappers>:用于扫描 mapper 信息

8127619e3aa924dffc08c8443c5b4ce2.png

mapper 映射配置文件详解

1 <mapper>:根元素

1.1 namespace 属性

用于指定命名空间, mybatis 是通过 namespace+id 的方式来定位 SQL语句的, 所以必须指定namespace. 通常namespace被配置为全限定路径

2 <select>:用于定义查询语句(DQL)

2.1 id 属性:用于唯一表示 SQL 语句, 类似于方法的方法名

2.2 resultType 属性

用于设定查询返回的数据类型, 要写类型的全限定路径. 如果返回的是集合类型, 要写集合的泛型的类型.

0dbd3c3c4ecd7a3548d50e398090d92c.png

编写测试类:

JUnit是一个Java语言的单元测试框架。

通常我们写完代码想要测试这段代码的正确性,那么必须新建一个类,然后创建一个 main() 方法,然后编写测试代码。如果需要测试的代码很多呢?那么要么就会建很多main() 方法来测试,要么将其全部写在一个 main() 方法里面。这也会大大的增加测试的复杂度,降低程序员的测试积极性。而 Junit 能很好的解决这个问题,简化单元测试,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。

eclipse内部集成了JUnit的jar包,BuildPath中选中JUnit。

01743219fa870286c81e9fc82be8b3b5.png

MyBatis 中常用的三个查询方法

selectList

用于查询多条数据的情况, 返回值是一个 list 集合. 如果没有查到任何数据, 返回没有元素的集合(空集合, 不是 null)

selectOne

用于查询单条数据的情况, 返回值是一个对象. 如果没有查到任何数据, 返回 null

selectMap

用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null) ,该方法返回一个Map集合,以键值对的方式返回,方法的第二个参数指定了以什么列作为key,这时可以将主键作为key放入

1f7dcd906d688149928eec9029147f15.png

b1ba3a4b26c1700e85c56d3c4079ab63.png

LOG4J :

a) log4j 是 Apache 提供的一款记录日志的工具

b) log4j 既可以将日志信息打印在控制台, 也可以打印输出到一个日志文件中.

c) log4j 可以定制日志的输出格式

d) log4j 可以定制日志级别

Log4J日志级别和分别代表的含义:

级别由高到低分:

FATAL :致命的, 表示非常严重的错误, 一般是系统错误

ERROR :错误, 表示代码错误, 比较严重

WARN :警告, 不影响程序的运行, 但是可能存在风险.

INFO :信息, 表示一个普通的输出信息

DEBUG :调试, 表示程序员人为的一些调试信息

导包 :log4j-1.2.17.jar 、log4j-api-2.0-rc1.jar 、log4j-core-2.0-rc1.jar

log4j.properties 的配置文件, 可以设定 log4j 的 设置信息, 例如日志级别, 日志输出方式, 日志格式等等

日志的输出格式:

fd3fa1fca318d5967a575d3b142c17fb.png

在MyBatis中使用Log4J:

通过<settings>开启log4j 的支持 ,<settings>用于设置 MyBatis 在运行时的行为方式, 例如: 缓存, 延迟加载, 日志等

dc23d3c6551bc32b91cad7e1c4b9c7d1.png

fef24534344ac9e72e511e4ea9072363.png

1. properties标签实现软编码

将连接数据库的参数信息(Driver、url、username、password等)单独创建一个properties文件进行存放,便于后续修改这些参数信息

通过resource属性来指定外部的properties文件路径:

505f6c92fc33189da59613b6b6d32864.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值