一.mybatis 基本配置
最近几天一直在学习mybatis,看了一些源码,本文讲述mybatis的一些基本配置和基本的用法和注意到一些细节。个人时间和精力有限,本文属于流水账类型,不成体系,算是自己的个人笔记吧。
1.本案例所使用的数据库为mysql,数据库的脚本代码如下:
1 | CREATE TABLE `message` ( |
2.创建实体类
1 | public class Message { |
3.去官网下载mybatis ,导入相应的jar包。
创建配置文件configuration.xml
1 |
|
这个配置文件,需要一个对象跟数据库交互,这个对象是sqlsession,下面讲述sqlsession.
二.Sqlsession对象
Sqlsession的作用:
- 向sql 语句传入参数
- 执行 sql语句
- 获取执行sql语句的结果
- 事物的控制
如何获取Sqlsession:
- 通过获取配置文件获取数据库连接相关信息
- 通过配置信息构建 sqlSessionFactory 的对象
- 通过sqlsessionFactory大家数据库会话。
1 | public SqlSession getSqlSession() throws IOException { |
3.SQL基本配置、执行
Message.xml文件配置:
1 | <mapper namespace="Message"> |
其中使用到了ONGL表达式:
在configuration.xml中配置
1 | <mappers> |
执行:
1 | /** |
三、log4j动态调试SQL
由于mybatis的sql语句写在了xml中,导致调试比较困难,不能打断点。这时需要日志去调。
下载log4j jar包,并配置log4j.propertites
1 | log4j.rootLogger=DEBUG,Console |
log的级别:
log.debug
log.info
log.warm
log.error
级别从小到大,也就是og4j.rootLogger=DEBUG;可以输出所有的日志类型;og4j.rootLogger=info ,只能够输出 info,warm ,error
要想mybtis 显示日志,必须log4j.rootLogger=DEBUG;
项目中配置了log4j,mybatis 会自动应用log4j
四、一些其他的知识点
mybatis sql配置文件常用的标签如下:
mapper文件下的标签含义:
nameSpace 标签区分可以用来区分sql文件
parameterType 将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。
resultMap 外部 resultMap 的命名引用。结果集的映射是 MyBatis 最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用 resultMap 或 resultType,但不能同时使用。
五、一对多sql xml的配置
java实体内Command包含了一个List
1 |
|
在mapper中配置:
1 | <mapper namespace="Command"> |
CommandContent.xml配置
1 | <mapper namespace="CommandContent"> |
经过这样的配置,在DAO层执行,就可以取出command中的属性。
六.取自增长 key
1 | <insert id="insert" parameterType="com.imooc.bean.Command" useGeneratedKeys="true" keyProperty="id"> |
七、一点细节
1 | #{} 和${}区别: |
另外:
敲黑板划重点,mybatis的所有知识都可以在官网上都有,建议看十遍,……^_^,地址:http://www.mybatis.org/mybatis-3/zh/configuration.html