# java-mybatis-study
**Repository Path**: cqjtu_admin/java-mybatis-study
## Basic Information
- **Project Name**: java-mybatis-study
- **Description**: myibatis 学习记录案例 希望能够坚持下去
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-13
- **Last Updated**: 2022-10-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# java-mybatis-study
#### 介绍
mybatis 学习记录案例 希望能够坚持下去
#### maven配置
```xml
org.mybatis
mybatis
3.5.6
mysql
mysql-connector-java
8.0.15
junit
junit
4.13.2
test
```
#### 创建mybatis配置文件
```xml
```
#### 创建SqlSessionFactory
```java
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
```
#### 创建mapper.xml
```xml
```
#### 使用
```java
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List userList = mapper.getUserList();
```
#### 注意(可能出现的问题)
1. 当报一下错误时 mapper.xml 文件打包错误
```
### Error building SqlSession.
### The error may exist in UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource UserMapper.xml
```
解决办法:
*** 1. 将mapper.xml 放在resoureces文件夹下
*** 2. 在pom.xml 文件中增加如下配置
```xml
src/main/resources
**/*.properties
**/*.xml
true
com/xukai/dao
**/*.properties
**/*.xml
true
```
#### crud
1. 查询
```xml
```
2. update
```xml
update user set username = #{username},pwd=#{pwd} where id = #{id}
```
3. insert
```xml
insert user(id,username,pwd) values (#{id},#{username},#{pwd})
```
4. delete
```xml
delete from user where id = #{id}
```
5. 注意
update delete insert 执行后记得提交事务
```javasqlSession.commit();```
### mybaties配置
#### properties
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置
例如
```xml
```
db.properties文件如下
```properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username=root
password=123456
```
mybatis-config.xml配置如下:
```xml
```
#### setting设置
##### 日志设置
1. 默认使用mybatis自带的STDOUT_LOGGING
```xml
```
2. 使用log4j日志
###### log4j包
```xml
log4j
log4j
1.2.17
```
###### log4.properties
```properties
#############
# 输出到控制台
#############
# log4j.rootLogger日志输出类别和级别:只输出不低于该级别的日志信息DEBUG < INFO < WARN < ERROR < FATAL
# WARN:日志级别 CONSOLE:输出位置自己定义的一个名字 logfile:输出位置自己定义的一个名字
log4j.rootLogger=DEBUG,CONSOLE,logfile
# 配置CONSOLE输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
# 配置CONSOLE设置为自定义布局模式
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
# 配置CONSOLE日志的输出格式 [frame] 2019-08-22 22:52:12,000 %r耗费毫秒数 %p日志的优先级 %t线程名 %C所属类名通常为全类名 %L代码中的行号 %x线程相关联的NDC %m日志 %n换行
log4j.appender.CONSOLE.layout.ConversionPattern=[frame] %d{yyyy-MM-dd HH:mm:ss,SSS} - %-4r %-5p [%t] %C:%L %x - %m%n
################
# 输出到日志文件中
################
# 配置logfile输出到文件中 文件大小到达指定尺寸的时候产生新的日志文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
# 保存编码格式
log4j.appender.logfile.Encoding=UTF-8
# 输出文件位置此为项目根目录下的logs文件夹中
log4j.appender.logfile.File=logs/root.log
# 后缀可以是KB,MB,GB达到该大小后创建新的日志文件
log4j.appender.logfile.MaxFileSize=10MB
# 设置滚定文件的最大值3 指可以产生root.log.1、root.log.2、root.log.3和root.log四个日志文件
log4j.appender.logfile.MaxBackupIndex=3
# 配置logfile为自定义布局模式
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
##########################
# 对不同的类输出不同的日志文件
##########################
## club.bagedate包下的日志单独输出
#log4j.logger.club.bagedate=DEBUG,bagedate
## 设置为false该日志信息就不会加入到rootLogger中了
#log4j.additivity.club.bagedate=false
## 下面就和上面配置一样了
#log4j.appender.bagedate=org.apache.log4j.RollingFileAppender
#log4j.appender.bagedate.Encoding=UTF-8
#log4j.appender.bagedate.File=logs/bagedate.log
#log4j.appender.bagedate.MaxFileSize=10MB
#log4j.appender.bagedate.MaxBackupIndex=3
#log4j.appender.bagedate.layout=org.apache.log4j.PatternLayout
#log4j.appender.bagedate.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
#4 mybatis 显示SQL语句部分
log4j.logger.org.mybatis=DEBUG
#log4j.logger.cn.tibet.cas.dao=DEBUG
#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
```
##### mybaties-config.xml
```xml
```
#### 注意在mybatis-config.xml中各属性配置具有严格的先后顺序
### 结果集映射 当从数据库中查询到的数据项字段名与pojo(普通的老的java对象) 不一致时 需要使用结果集映射
```xml
```