MyBatis内容整理

2018-05-13  本文已影响83人  Muscleape

MyBatis内容整理

1、关于JDBC

项目中使用了8.0.9版本的JDBC,在配置JDBC相关的数据库连接时,与老版本的有一些不同

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/message?serverTimezone=GMT&autoReconnect=true&useSSL=true",
"root",
"root");

2、MyBatis的配置信息

配置信息一般可以在下载源码中包括,路径为:

mybatis-3-mybatis-3.4.6\src\test\java\org\apache\ibatis\submitted\complex_property

3、log4j配置文件

# 日志输出的级别及位置
# debug,info,warn,error(级别低到高)
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
# %d日志时间
# %t日志所处线程的线程名称
# %p输出日志的级别(debug,info,warn,error) 5p输出的字符占5位 -5p不足5位的在右侧补空位
# %c输出日志时所处类的全名,包括包名
# %m输出日志时自己添加的附件信息
# %n换行
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
# org.apache包名,为当前包设置特殊的日志输出属性
log4j.logger.org.apache=INFO

4、MyBatis的XML配置文件中配置信息使用OGNL语言,部分类似EL语言

5、<where>标签

6、<sql>标签

7、<set>标签

8、<trim>标签

9、<choose>标签

<choose>
    <when test=""></when>
    <when test=""></when>
    <when test=""></when>
    <when test=""></when>
    <otherwise></otherwise>
</choose>

10、主从表

11、SQL中的增删改查对应的标签

12、<resultMap>标签

13、控制动态SQL拼接

14、格式化输出

15、配置关联关系(一对多及多对一等)

16、<sql>标签

17、<include>标签

18、resultMap和ResultType

相同点:

resultMap resultType
适用于返回值类型是自定义的实体类的情况,实体类的属性在标签<resultMap>中指定 适用于返回值类型是JAVA提供的类型的情况,例如"java.util.Map"、"long"、"java.lang.String"等

不同点:

resultMap resultType
适用于返回值类型是自定义的实体类的情况,实体类的属性在标签<resultMap>中指定 适用于返回值类型是JAVA提供的类型的情况,例如"java.util.Map"、"long"、"java.lang.String"等

19、parameterMap和parameterType

相同点:

不同点:

parameterMap parameterType
已不推荐使用 直接将查询参数映射到对应的java对象上去

20、#{}和${}

#{} ${}
被MyBatis解析成预编译的【?】,然后通过PreparedStatement赋值为对应的变量值 直接将变量值拼接在对应的位置,没有预编译效果,使用位置要加单引号

#{}的优势

${}的优势

21、MyBatis处理自增主键字段

22、找不到namespace.id的异常效果

23、MyBatis中的接口式编程

MyBatis中通过SQLSession直接调用SQL执行的方式是:

// 通过SQLSession执行SQl语句
messageList = sqlSession.selectList("Message.queryMessageList", message);

这种方式存在几个问题:

  1. 参数1是namespace的名称及调用的xml中方法的名称,容易存在拼写错误的问题;
  2. 参数二指定了参数对象的类型,需要与xml中指定的parameterType类型严格对应;
  3. 返回值的类型需要与xml中指定的resultMap严格对应;
  4. 通过查看SQLSession的selectList方法,如果以上三处在代码中写错,代码在编译时不会出现任何的问题,但是在执行时,因为类型的问题会导致报错;

改进措施,使用接口式的编程,在接口中已方法的方式指定对应的参数及返回值类型;

在MyBatis与Spring结合使用的程序中,大量的配置文件均由Spring的配置实现,其中会有大量的接口;

上一篇下一篇

猜你喜欢

热点阅读