# MyBatis + Spring

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nishino_shou/article/details/80641326
# MyBatis + Spring

## 定位
减少持久层开发量,不必关心持久层的开发,只需要设计好相关的SQL语句即可。

## MyBatis的基本开发
应该先创建接口文件,在接口文件中声明需要执行的任务的抽象方法,然后创建XML映射,配置抽象方法对应的SQL语句。

## 配置MyBatis+Spring

添加`mybatis`和`mybatis-spring`依赖:


注意:如果还使用了`spring-jdbc`,添加依赖时使用的版本必须与`spring-webmvc`的保持一致!


在Spring中配置`MapperScannerConfigurer`和`SqlSessionFactoryBean`:



# 在MyBatis插入数据时获取新数据的ID

首先,声明接口的抽象方法时,应该使用对象作为参数,例如:

void register(User user);

然后,在配置映射时,`<insert>`节点中必须添加:





## 关于使用Spring+MyBatis

在绝大部分时候,都会使用Spring+MyBatis,很少单独使用MyBatis,在整合后,不必再配置MyBatis的XML文件(`mybatis-config.xml`)。

使用MyBatis时,执行的增删改操作都默认返回受影响的行数,在声明接口中的抽象方法时,把返回值设计为`Integer`即可。

如果执行的是查询操作,返回值本质上都是`List<?>`,当然,在声明接口中的抽象方法时,可以是集合类型,也可以是集合中的泛型(主要用于获取1条数据),在匹配的XML映射中,只要是查询操作,都必须配置`resultType`,即使返回的类型是`Integer`等包括类或`String`,也必须明确的声明,如果是返回`List`或集合中的泛型,配置的返回值类型都是泛型的类型。

目前在接口中的抽象方法中都最多只 使用了1个参数,当只有1个参数时,如果参数的类型是基本类型或包装类,或是`String`,则不需要在映射文件中声明参数类型,否则,应该在映射文件中配置`parameterType`属性以指定参数的类型。

在业务中,应该明确操作是否操作,如果成功,可以直接返回某个值,如果失败,则应该抛出某种异常,抛出的异常应该是直接或间接继承自`RuntimeException`的!

当开发某个功能时,应该先有大概的设计,然后先开发持久层,再开发业务层,再开发控制器层,最后开发视图层。



# 解决开发环境错误

如果提示`ZipException`,一定是解压某个`jar`包出错,可能是下载的`jar`包出错,下载时丢失部分数据包,需要重新下载(删除jar包文件,甚至删除整个m2文件夹)。

如果提示`ClassNotFoundException`,即找不到某个类,且不是自己开发的类,也会是以上同样的问题,采取同样的处理方式即可。

猜你喜欢

转载自blog.csdn.net/Nishino_shou/article/details/80641326