# 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 ```