黑马程序员技术交流社区
标题:
Mybatis
[打印本页]
作者:
草莓味的可爱
时间:
2019-6-21 10:51
标题:
Mybatis
- Mybatis
- 概念:是一种持久层的框架
- 作用:
- 只关心sql的编写,不需要考虑数据源和连接的创建等
- 可以直接将入参和出参直接封装到java对象中
- 解耦:将sql代码从java代码中解放,写在xml配置文件中便于维护和提高阅读性,
- sql编写更加灵活
- Mybatis的映射配置文件:userMapper.xml
- namespace:命名空间
- select,insert,update,delete
- id
- parameterType:入参类型
- resultType:出参类型
- 返回主键:insert操作
- keyProperty=“id”
- useGenerateKeys=true
- Mybatis的核心配置文件:sqlMqpConfig.xml
- properties:引入外部priperties文件
- typeAliases:别名标签
- environments:配置数据源环境 defalut=""
- environment:某个数据源环境
- transactionManager:事务管理器 JDBC
- dataSource:POOLED
- mappers:加载映射文件
- Mybatis的相关API
- 加载核心配置文件:Resouces
- 用sqlSessionFactoryBulider创建sqlSessionFactory
- 用sqlSessionFactory创建sqlSession
- openSession()
- openSession(boolean autoCommit)
- 执行sql操作
- 命名空间.id
- Mybatis的入门demo开发步骤
- 导入坐标
- 编写实体类和表
- 编写映射文件
- 编写核心配置文件
- 测试
### 2 今日目标
#### 2.2.1 能够使用Mybatis代理方式生成Mapper实现类(dao层)。【++++】
- 条件:
- userMapper.xml的namespace=userMapper接口的全类名
- userMaper接口的方法名= userMapper.xml的id名
- userMaper接口的方法的返回类型= userMapper.xml的resultType类型
- userMaper接口的方法的参数类型= userMapper.xml的aprameterType类型
#### 2.2.3 能够使用Mybatis的常用动态SQL标签(映射文件)【+++++】
- if标签 test="条件"
- where标签 如果where标签内有条件拼接就在最外面拼接where关键字
- foreach 标签:
- 应用场景:常用于in()的参数的循环
- ```
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
```
- sql标签:抽取相同的sql片段
- include标签:引入sql标签的sql片段
- 其他动态sql标签:<http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html>
#### 2.2.4 能够使用Mybatis的核心配置文件的其他标签【++++】
- typeHandler:自定义类型转换器
- 步骤
- 编写类继承类(BaseTypeHandler)或者实现一个接口(TypeHandler)
- setxxxxParamenter()
- getxxxResult()
- 配置sqlMapConfig.xml
- <typeHandlers>
- typeHandler handler ="编写的类"
- 测试
- plugins:引入第三方插件
- pageHelper:分页助手
- 步骤:
- 导入坐标(两个)
- zai核心配置文件中配置plugins
- ```
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"></property>
</plugin>
</plugins>
```
- ```
//设置分页相关参数 当前页+每页显示的条数
PageHelper.startPage(3,3);
```
#### 2.2.5 日志使用(拓展)
1.日志级别:debug,info,warning,error
2.log4j的使用:
- 导入坐标:log4j
- 导入log4j.properties
- ```
private static Logger logger = Logger.getLogger(MapperTest.class);
logger.info("debug....");//打印重要信息
logger.error("debug....");//打印异常信息
```
3.log4j配置文件解析:
```
### direct log messages to stdout 打印到控制台###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log 打印到日志文件###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
### 日志级别,别名1,别名2 ###
log4j.rootLogger=debug, stdout,file
```
详细配置参考链接:<https://www.cnblogs.com/gaishishengzhu/articles/1735441.html>
4.日志工具种类:
1)log4j (常用)
2)jdk logging
3)logback(常用)
4) apach common-logging
5.日志工具API:slf4j
底层可以使用上面的任意一种日志工具:
slf4j+log4j
slf4j+logback
日志文件发展史:<https://blog.csdn.net/qq_32625839/article/details/80893550>
### 3 上午总结
- mybatis代理方式生成mapper实现类
- 条件
- 映射文件的namespace=mapper接口的全限定名
- 映射文件的id=mapper接口的方法名
- 映射文件的parameterType=mapper接口的方法的参数类型
- 映射文件的resultType=mapper接口的方法的返回值类型
- 使用方法
- SqlSession session = SqlSessionFactory.openSession()
- session.selectList(命名空间.id);
- SqlSession session = SqlSessionFactory.openSession()
- UserMapper mapper =session .getMapper(UserMapper.class)
- mapper.findAll();
- 动态sql标签
- if test="条件"
- where
- foreach: in()参数的循环
- open=""
- item=""
- close=""
- sql 抽取相同的sql片段
- include
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2