原是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)
1.mybatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架
2.mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
3.Mybatis可以简单使用的XML或者注解用于配置和原始映射将接口和java的pojo映射成为数据库中的记录
4.Mybatis是一个半自动的ORM框架
下载地址http://github.com/mybatis/mybatis-3http://github.com/mybatis/mybatis-3
1)JDBC
SQL 夹在Java代码块里,耦合度高导致硬编码内伤
维护不易且实际开发需求中SQL有变化,频繁修改的情况很多
2)Hibernate 和 JPA
长难复杂SQL, 对于Hibernate 而言处理也不容易
内部自动生产的SQL,不容易做特殊优化
基于全映射的全自动框架,大量字段的POJO 进行部分映射时,比较困难。导致数据库性能下降
3) Mybatis
对于开发人员而言,核心SQL还是要自己书写跟优化
SQL和Java编码分开,功能便捷清洗,一个专注业务,一个专注数据
1.创建项目
2.引入依赖
- <dependency>
- <groupId>org.mybatis.spring.bootgroupId>
- <artifactId>mybatis-spring-boot-starterartifactId>
- <version>2.2.2version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- dependency>
需要创建Mybatis的核心配置文件命名为mybatis-config.xml
存放位置是src/main/resources目录下
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
- configuration>
详细说明:
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc,Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
- <property name="username" value="root"/>
- <property name="password" value="root"/>
- dataSource>
- environment>
- environments>
- <mappers>
- <mapper resource="org/mybatis/example/BlogMapper.xml"/>
- mappers>
- configuration>
创建mapper接口
Mybatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
- public interface UserMapper{
-
- }
创建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属性保持一致
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.pingguo.bloomtest.dao.UserMapper">
- <insert id="save" >
- insert into t_user vlues(null,'admin','123456',23,'男','1351371333@aini.com',now())
- insert>
- mapper>
测试添加功能
-
- @Test
- void contextLoads() throws IOException {
- //加载核心配置
- InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
- //获取sqlSessionFactoryBuilder对象
- SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
- //获取sqlSessionFactory生成Sqlsession对象
- SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
- //创建Sqlsession对象通过Sqlsession对象操作的sql都必须手动提交或者回滚
- //SqlSession session = sqlSessionFactory.openSession();
- //创建Sqlsession对象通过Sqlsession对象操作的sql都会自动提交
- SqlSession session = sqlSessionFactory.openSession(true);
- //通过代理创建UserMapper实现类对象
- UserMapper mapper = session.getMapper(UserMapper.class);
- //调用方法匹配调用的方法映射文件的SQL标签并执行SQL语句
- int result= mapper.insertUser();
- //session.commit();
- System.out.println("结果"+result);
- }
优化功能
加入log4j日志依赖
-
- <dependency>
- <groupId>log4jgroupId>
- <artifactId>log4jartifactId>
- <version>1.2.17version>
- dependency>
加入log4j的配置文件
log4j的配置文件吗为log4j.xml存放的位置是src/main/resources目录下
- log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
-
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-
-
- <appender name="console" class="org.apache.log4j.ConsoleAppender">
-
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
- layout>
-
-
- <filter class="org.apache.log4j.varia.LevelRangeFilter">
-
- <param name="levelMin" value="INFO"/>
-
- <param name="levelMax" value="ERROR"/>
- filter>
- appender>
-
-
-
- <appender name="fileAppender" class="org.apache.log4j.FileAppender">
-
- <param name="File" value="/data/applogs/own/fileAppender.log"/>
-
- <param name="Append" value="false"/>
- <param name="Threshold" value="INFO"/>
-
- <param name="BufferedIO" value="false"/>
-
- <param name="BufferSize" value="512"/>
-
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
- layout>
- appender>
-
-
-
-
- <appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
-
- <param name="File" value="/data/applogs/RollingFileAppender.log" />
-
- <param name="Append" value="true" />
-
- <param name="MaxBackupIndex" value="10" />
-
- <param name="MaxFileSize" value="10KB" />
- `
- <layout class="org.apache.log4j.PatternLayout">
-
- <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
- layout>
- appender>
-
-
-
- <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
-
- <param name="File" value="/data/applogs/own/dailyRollingAppender.log"/>
- <param name="Append" value="true" />
-
- <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
-
-
-
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
- layout>
- appender>
-
-
-
-
- <logger name="logTest" additivity="false">
- <level value ="INFO"/>
- <appender-ref ref="dailyRollingAppender"/>
- logger>
-
-
-
- <root>
- <appender-ref ref="console"/>
- <appender-ref ref="fileAppender"/>
- <appender-ref ref="rollingAppender"/>
- <appender-ref ref="dailyRollingAppender"/>
- root>
-
- log4j:configuration>
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc,Driver"/>
-
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
-
- <property name="username" value="root"/>
-
- <property name="password" value="root"/>
- dataSource>
- environment>
- environments>
- <mappers>
- <mapper resource="org/mybatis/example/BlogMapper.xml"/>
- mappers>
- configuration>
jdbc.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql"//localhost:3306/mybatis
- jdbc:username=root
- jdbc:password=123456
mybatis-config.xml
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
- <properties resource="jdbc.properties"/>
-
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="${jdbc.driver}"/>
-
- <property name="url" value="${jdbc.url}"/>
-
- <property name="username" value="${jdbc.username}"/>
-
- <property name="password" value="${jdbc.password}"/>
- dataSource>
- environment>
- environments>
- <mappers>
- <mapper resource="org/mybatis/example/BlogMapper.xml"/>
- mappers>
- configuration>
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
-
-
- <properties resource="jdbc.properties"/>
-
- <typeAliases>
-
-
- <package name="com.yongyuankuaile.mybatis.pojo"/>
- typeAliases>
-
-
- <environments default="development">
-
- <environment id="development">
-
- <transactionManager type="JDBC"/>
-
- <dataSource type="POOLED">
- <property name="driver" value="${jdbc.driver}"/>
-
- <property name="url" value="${jdbc.url}"/>
-
- <property name="username" value="${jdbc.username}"/>
-
- <property name="password" value="${jdbc.password}"/>
- dataSource>
- environment>
- environments>
-
- <mappers>
- <mapper resource="org/mybatis/example/BlogMapper.xml"/>
- mappers>
- configuration>
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
-
-
- <properties resource="jdbc.properties"/>
-
- <typeAliases>
-
-
- <package name="com.yongyuankuaile.mybatis.pojo"/>
- typeAliases>
-
-
- <environments default="development">
-
- <environment id="development">
-
- <transactionManager type="JDBC"/>
-
- <dataSource type="POOLED">
- <property name="driver" value="${jdbc.driver}"/>
-
- <property name="url" value="${jdbc.url}"/>
-
- <property name="username" value="${jdbc.username}"/>
-
- <property name="password" value="${jdbc.password}"/>
- dataSource>
- environment>
- environments>
-
- <mappers>
-
- <package name="com.yongyuankuaile.mybatis.xml"/>
- mappers>
- configuration>