备份笔记。所有代码都是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:
select
from chr_to_acc
where taxon = #{taxon,jdbcType=VARCHAR}
限定查询的条数
接口:
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的语法错误会报出来,不会是空指针
推荐文章
您阅读本篇文章共花了:
上一篇
intellij-idea java eclipse IDEA 28 个天花板技巧!
下一篇
centos 使用openssl 生成pfx格式证书时报错:unable to load certificates
返回顶部暗黑模式
发表评论