• Mybatis的学习(一)只Mybatis的介绍和使用


    Mybatis的历史

    原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis,代码于2013年11月迁移到Github。

    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

    Mybatis的特性

    1.mybatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架

    2.mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集

    3.Mybatis可以简单使用的XML或者注解用于配置和原始映射将接口和java的pojo映射成为数据库中的记录

    4.Mybatis是一个半自动的ORM框架

    Mybatis的下载

    下载地址http://github.com/mybatis/mybatis-3http://github.com/mybatis/mybatis-3

    Mybatis和其它持久化技术对比

    1)JDBC
    SQL 夹在Java代码块里,耦合度高导致硬编码内伤
    维护不易且实际开发需求中SQL有变化,频繁修改的情况很多
    2)Hibernate 和 JPA
    长难复杂SQL, 对于Hibernate 而言处理也不容易
    内部自动生产的SQL,不容易做特殊优化
    基于全映射的全自动框架,大量字段的POJO 进行部分映射时,比较困难。导致数据库性能下降
    3) Mybatis
    对于开发人员而言,核心SQL还是要自己书写跟优化
    SQL和Java编码分开,功能便捷清洗,一个专注业务,一个专注数据

    Mybatis的使用

    1.创建项目

    2.引入依赖

    1. <dependency>
    2. <groupId>org.mybatis.spring.bootgroupId>
    3. <artifactId>mybatis-spring-boot-starterartifactId>
    4. <version>2.2.2version>
    5. dependency>
    6. <dependency>
    7. <groupId>mysqlgroupId>
    8. <artifactId>mysql-connector-javaartifactId>
    9. dependency>

    Spring整合Mybatis

    需要创建Mybatis的核心配置文件命名为mybatis-config.xml

    存放位置是src/main/resources目录下

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. configuration>

    详细说明:

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <environments default="development">
    6. <environment id="development">
    7. <transactionManager type="JDBC"/>
    8. <dataSource type="POOLED">
    9. <property name="driver" value="com.mysql.jdbc,Driver"/>
    10. <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    11. <property name="username" value="root"/>
    12. <property name="password" value="root"/>
    13. dataSource>
    14. environment>
    15. environments>
    16. <mappers>
    17. <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    18. mappers>
    19. configuration>

    创建mapper接口

    Mybatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

    1. public interface UserMapper{
    2. }

    创建mybatis映射文件

    相关概念ORM对象关系映射

    对象:Java的实体类对象

    关系:关系型数据库

    映射:两者之间的关系

    java概念数据库概念
    属性字段/列
    对象记录/行

    1.映射文件的命名规范

    表对应的实体类的表名+Mapper.xml

    例如:表t_user,映射的实体类为User,所以对应文件为UserMapper.xml

    因此一个映射文件对应一个实体类,对应一张表的操作。

    Mybatis映射文件用于编写SQL,访问以及操作表中的数据

    Mybatis映射文件存放的位置是src/main/resources/mappers目录下

    2.Mybatis中可以面向接口操作数据,要保持两个一致

    a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致

    b>mapper接口方法的方法名和映射文件中编写SQL的标签的id属性保持一致

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.pingguo.bloomtest.dao.UserMapper">
    5. <insert id="save" >
    6. insert into t_user vlues(null,'admin','123456',23,'男','1351371333@aini.com',now())
    7. insert>
    8. mapper>

    测试添加功能

    1. @Test
    2. void contextLoads() throws IOException {
    3. //加载核心配置
    4. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    5. //获取sqlSessionFactoryBuilder对象
    6. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    7. //获取sqlSessionFactory生成Sqlsession对象
    8. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    9. //创建Sqlsession对象通过Sqlsession对象操作的sql都必须手动提交或者回滚
    10. //SqlSession session = sqlSessionFactory.openSession();
    11. //创建Sqlsession对象通过Sqlsession对象操作的sql都会自动提交
    12. SqlSession session = sqlSessionFactory.openSession(true);
    13. //通过代理创建UserMapper实现类对象
    14. UserMapper mapper = session.getMapper(UserMapper.class);
    15. //调用方法匹配调用的方法映射文件的SQL标签并执行SQL语句
    16. int result= mapper.insertUser();
    17. //session.commit();
    18. System.out.println("结果"+result);
    19. }

    优化功能

    加入log4j日志依赖

    1. <dependency>
    2. <groupId>log4jgroupId>
    3. <artifactId>log4jartifactId>
    4. <version>1.2.17version>
    5. dependency>

    加入log4j的配置文件

    log4j的配置文件吗为log4j.xml存放的位置是src/main/resources目录下

    1. log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
    2. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    3. <appender name="console" class="org.apache.log4j.ConsoleAppender">
    4. <layout class="org.apache.log4j.PatternLayout">
    5. <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
    6. layout>
    7. <filter class="org.apache.log4j.varia.LevelRangeFilter">
    8. <param name="levelMin" value="INFO"/>
    9. <param name="levelMax" value="ERROR"/>
    10. filter>
    11. appender>
    12. <appender name="fileAppender" class="org.apache.log4j.FileAppender">
    13. <param name="File" value="/data/applogs/own/fileAppender.log"/>
    14. <param name="Append" value="false"/>
    15. <param name="Threshold" value="INFO"/>
    16. <param name="BufferedIO" value="false"/>
    17. <param name="BufferSize" value="512"/>
    18. <layout class="org.apache.log4j.PatternLayout">
    19. <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
    20. layout>
    21. appender>
    22. <appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
    23. <param name="File" value="/data/applogs/RollingFileAppender.log" />
    24. <param name="Append" value="true" />
    25. <param name="MaxBackupIndex" value="10" />
    26. <param name="MaxFileSize" value="10KB" />
    27. `
    28. <layout class="org.apache.log4j.PatternLayout">
    29. <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
    30. layout>
    31. appender>
    32. <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
    33. <param name="File" value="/data/applogs/own/dailyRollingAppender.log"/>
    34. <param name="Append" value="true" />
    35. <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
    36. <layout class="org.apache.log4j.PatternLayout">
    37. <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
    38. layout>
    39. appender>
    40. <logger name="logTest" additivity="false">
    41. <level value ="INFO"/>
    42. <appender-ref ref="dailyRollingAppender"/>
    43. logger>
    44. <root>
    45. <appender-ref ref="console"/>
    46. <appender-ref ref="fileAppender"/>
    47. <appender-ref ref="rollingAppender"/>
    48. <appender-ref ref="dailyRollingAppender"/>
    49. root>
    50. log4j:configuration>

    核心配置文件详解

    配置文件之envionment

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <environments default="development">
    6. <environment id="development">
    7. <transactionManager type="JDBC"/>
    8. <dataSource type="POOLED">  
    9. <property name="driver" value="com.mysql.jdbc,Driver"/>
    10.    
    11. <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    12. <property name="username" value="root"/>
    13. <property name="password" value="root"/>
    14. dataSource>
    15. environment>
    16. environments>
    17. <mappers>
    18. <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    19. mappers>
    20. configuration>

    配置文件之properties

    jdbc.properties

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql"//localhost:3306/mybatis
    3. jdbc:username=root
    4. jdbc:password=123456

    mybatis-config.xml

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <properties resource="jdbc.properties"/>
    6. <environments default="development">
    7. <environment id="development">
    8. <transactionManager type="JDBC"/>
    9. <dataSource type="POOLED">  
    10. <property name="driver" value="${jdbc.driver}"/>
    11.    
    12. <property name="url" value="${jdbc.url}"/>
    13. <property name="username" value="${jdbc.username}"/>
    14. <property name="password" value="${jdbc.password}"/>
    15. dataSource>
    16. environment>
    17. environments>
    18. <mappers>
    19. <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    20. mappers>
    21. configuration>

    配置文件之typeAliases

    
    
    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <properties resource="jdbc.properties"/>
    6. <typeAliases>
    7. <package name="com.yongyuankuaile.mybatis.pojo"/>
    8. typeAliases>
    9. <environments default="development">
    10. <environment id="development">
    11. <transactionManager type="JDBC"/>
    12. <dataSource type="POOLED">
    13. <property name="driver" value="${jdbc.driver}"/>
    14. <property name="url" value="${jdbc.url}"/>
    15. <property name="username" value="${jdbc.username}"/>
    16. <property name="password" value="${jdbc.password}"/>
    17. dataSource>
    18. environment>
    19. environments>
    20. <mappers>
    21. <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    22. mappers>
    23. configuration>

    核心配置文件之mapps

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <properties resource="jdbc.properties"/>
    6. <typeAliases>
    7. <package name="com.yongyuankuaile.mybatis.pojo"/>
    8. typeAliases>
    9. <environments default="development">
    10. <environment id="development">
    11. <transactionManager type="JDBC"/>
    12. <dataSource type="POOLED">
    13. <property name="driver" value="${jdbc.driver}"/>
    14. <property name="url" value="${jdbc.url}"/>
    15. <property name="username" value="${jdbc.username}"/>
    16. <property name="password" value="${jdbc.password}"/>
    17. dataSource>
    18. environment>
    19. environments>
    20. <mappers>
    21. <package name="com.yongyuankuaile.mybatis.xml"/>
    22. mappers>
    23. configuration>

  • 相关阅读:
    函数和变量总结
    solidty-基础篇-结构体和数组,私有 / 公共函数,函数的返回值和修饰符,事件
    测试/开发程序员的“我“要跳槽,利与弊共存......
    博士新生应该懂得哪些道理? - 易智编译EaseEditing
    开播客户端
    Java类和成员变量详解
    如何通过 kubectl 进入 node shell
    SRC实战 | CORS跨资源共享漏洞
    吃透Chisel语言.33.Chisel进阶之硬件生成器(二)——Chisel组合逻辑电路生成:以BCD编码表为例
    ARM寻址方式
  • 原文地址:https://blog.csdn.net/weixin_53998054/article/details/126334751