备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决!

目录

集成mybatis安装mybatis的jar包安装插件:mybatis-generator安装方法生成方法报错:java.lang.RuntimeException: Exception getting JDBC Driver

mybatis注解

dao层XML语法使用map方式返回多条数据限定查询的条数返回List型的函数报错Could not resolve type alias 'BaseResultMap'

排错入口类不能使用@MapperScandao无法自动装配dao层测试NullPointerException

集成mybatis

mybatis是方便操作数据库的,不多说。

安装mybatis的jar包

去 https://github.com/mybatis/mybatis-3/releases 下载zip,解压 项目–run as/debug as–run configuration–Maven Build…– Goals的内容是:

install:install-file -Dfile=F:\eclipse\mybatis-3.5.2\mybatis-3.5.2.jar -DgroupId=org.mybatis.spring.boot -DartifactId=mybatis-spring-boot-starter -Dversion=3.5.2 -Dpackaging=jar

-DgroupId -DartifactId -Dversion是跟pom.xml的配置对应的

然后点击run和apply

控制台显示success表示完成

右键项目名称–Maven–Update Project

之后pom文件dependency的报错会消失。

安装插件:mybatis-generator

这个可以自动读取数据库里的表格产生操作数据的mapper

安装方法

Help–Install New Software–Add–Location: https://dl.bintray.com/mybatis/mybatis-generator/

之后就等安装完成并重启。修改pom.xml(这个version不知道可以去线上查)

org.mybatis.generator

mybatis-generator-core

1.3.7

另外plugins下也要添:mybatis-generator.xml是实际配置文件

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

${basedir}/src/main/resources/mybatis-generator.xml

true

true

mysql

mysql-connector-java

${mysql.version}

mybatis-generator示例:

文件说明:

targetProject要写你现在的项目名。什么src/main/java啊,正斜杠反斜杠啊,src啊,.\src啊,绝对路径啊,都不对。就乖乖写项目名。 另外connectionURL里要写数据库名称。 这里就是要用的数据库的名字

下面

就是你要生成代码的表,只要换换名字就好了。

生成方法

项目名称右键–run as–run configurations–MyBatis Generator–添加上configuration file,运行即可。

刷新一下目录,就可以看到model和mapper下都有文件产生了。如果successful但是没文件产生,请检查targetProject是不是写错了。

报错:java.lang.RuntimeException: Exception getting JDBC Driver

检查pom文件中mysql-connector-java这个配了没有,如果写了下面这句,请删除 runtime

mybatis注解

注解方式操作数据:

@Select是查询类的注解,所有的查询均使用这个

@Result修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。 如果不对应,如下面这个例子,updateTime时实体类属性,update_time是sql列名

@Select("select *from Demo where id=#{id}")

@Results({

@Result(property="updateTime",column="update_time")

})

public Demo selectById2(int id);

@Insert插入数据库使用,直接传入实体类会自动解析属性到对应的值

@Update负责修改,也可以直接传入对象

@delete负责删除

dao层XML语法

使用map方式返回多条数据

接口上指定哪个是key,这个key来自数据库那个表的某个字段,而map的value必须是对象,比如某个实体类。

接口:

@MapKey("chr")

Map selectByTaxon(String taxon);

xml:

限定查询的条数

接口:

List selectByTaxon(String taxon, String num);

xml:直接使用接口的变量,由于num是String类型,sql中会继续加引号,所以这里应该用$

返回List型的函数

接口:

List selectByTransId(String taxon, String transId);

xml中注意:是resultType而不是resultMap。如果说这里不是String而是别的对象类型,写对应的就好了。

报错

Could not resolve type alias ‘BaseResultMap’

查看select语句,有没有把resultMap写成了resultType?

排错

入口类不能使用@MapperScan

查找不到org.mybatis.spring.annotation,因此无法引用其下的MapperScan 此时Project Explore下的Maven Dependencies中,也找不到mybatis-spring-XXX.jar

先去查一下 https://mvnrepository.com/artifact/org.mybatis/mybatis-spring

由于我装了最新版的mybatis(3.5.2),所以直接看最新的mybatis spring,也就是2.0.2。如下图,版本合适。

所以原因是我没有配置org.mybatis的dependency。去pom.xml下粘贴网页上这一段

update项目一下,就发现可以使用MapperScan了。 (项目名称,右键,maven-update project)

dao无法自动装配

Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

其实Juint test已经显示这个问题了。建议先用那个测试每段代码每个功能,再做下一步的开发。

解决:类似上面的,添加依赖

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.0

正确输出:

dao层测试NullPointerException

mybatis自动生成的函数,调用的结果都是空指针。那说明没有装配上。检查:

RunWith这句有没有注释掉,要取消注释 dao接口上有没有写@Mapper引导spring来注入

xml的语法错误会报出来,不会是空指针

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: 

发表评论

返回顶部暗黑模式