1.什么是MyBatis?

  MyBatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架。MyBatis去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO映射成数据库中的记录。

  MyBatis作为持久层框架,主要思想是将程序中大量的SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。这样的好处是将SQL语句和程序代码分离,可以在不修改代码的前提下,直接在配置文件中修改SQL。

2.MyBatis和Hibernate的区别。

  Hibernate是以一种“全自动”的ORM框架,它实现了数据库表和POJO之间的映射,以及SQL的自动生成。

  MyBatis相对于hibernate来说,是一种“半自动化”的ORM框架,MyBatis的着力点在pojo和sql之间的映射,MyBatis虽然也实现了数据库表和pojo之间的映射,但是并不能在运行期间生成SQL语句,需要程序员在配置文件中配置,将SQL需要的参数和返回的结果字段映射到指定POJO。

  Mybatis以SQL开发的工作量和数据库移植上的让步,为系统设计提供了更大的自由空间。

3.入门案例

3.1创建一个项目,导入数据库连接、MyBatis的jar包

3.2创建一个数据库-mybatis,创建一个表t_user

CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(18) NOT NULL,
`sex` char(2) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.3创建一个User类

public class User {

    private Integer id;
private String username;
private String sex;
private Integer age;
public User(String username, String sex, Integer age) {
super();
this.username = username;
this.sex = sex;
this.age = age;
}
public User() {
super();
}
//省略get、set方法 }

3.4配置这个pojo对应的UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace指用户自定义的命名空间 -->
<mapper namespace="com.dj.mapper.UserMapper">
<!--
id="save"是唯一的标示符
parameterType属性指明插入时使用的参数类型
useGeneratedKeys="true"表示使用数据库的自动增长策略
-->
<insert id="save" parameterType="com.dj.pojo.User" useGeneratedKeys="true">
insert into t_user(username,sex,age) values(#{username},#{sex},#{age})
</insert>
</mapper>

3.5配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- XML 配置文件包含对 MyBatis 系统的核心设置 -->
<configuration>
<!-- 指定 MyBatis 所用日志的具体实现 -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 环境配置,即连接的数据库。 -->
<environments default="mysql">
<environment id="mysql">
<!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
<transactionManager type="JDBC"/>
<!-- dataSource指数据源配置,POOLED是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="123456"/>
</dataSource>
</environment>
</environments>
<!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 -->
<mappers>
<mapper resource="com/dj/mapper/UserMapper.xml"/>
</mappers>
</configuration>

3.6编写测试类

public class MyBatisTest {

    @Test
public void save() throws Exception{
//读取mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis,创建一个sqlsessionfactory类的实例
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//创建一个SqlSession实例
SqlSession sqlSession = factory.openSession();
//创建一个User对象
User user = new User("王五", "男", 12);
sqlSession.insert("com.dj.mapper.UserMapper.save", user);
sqlSession.commit();
sqlSession.close();
} }

运行后可以看到结果

要想控制台显示sql语句,要导入log4j的jar包和log4j.properties文件。

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.dj.mapper.UserMapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

控制台有如下显示

 源码下载路径https://files.cnblogs.com/files/dj-blog/MyBatisTest.zip

最新文章

  1. 判断是否为gif/png图片的正确姿势
  2. iOS十六进制和字符串的相互转换
  3. ehcache整合spring本地接口方式
  4. redis缓存怎么存储对象
  5. 植物大战僵尸中文第二版和年度版 游戏分析及delphi源码
  6. 如何设置、查看以及调试core文件
  7. IOS的 testflight测试设置
  8. Android四大组件之一Service介绍-android学习之旅(十二)
  9. 【如何快速的开发一个简单的iOS直播app】(代码篇)
  10. 区间求小于等于k的数字个数 hdu4177
  11. 3、zookeeper 集群模式搭建
  12. Freemarker导出带多个不重复图片的word
  13. go如何进行交叉编译
  14. 更改Android应用程序的图标
  15. String中intern()方法
  16. 从myspace数据库看分布式系统数据结构变迁[转]
  17. bootstrap基础学习八篇
  18. iOS10以前的本地通知和远程通知
  19. BZOJ3141:[HNOI2013]旅行
  20. LeetCode.896-单调数组(Monotonic Array)

热门文章

  1. Win7怎么显示文件的后缀名
  2. CSS:a:link;visited;hover;active解释及正确顺序
  3. canvas粒子系统的构建
  4. opencv VideoCapture使用示例
  5. 【Zigbee技术入门教程-02】一图读懂ZStack协议栈的基本架构和工作机理
  6. 2015苏州大学ACM-ICPC集训队选拔赛(3)题解
  7. Flask01 初识flask、flask配置
  8. 【ACM小白成长撸】--贪婪法解硬币找零问题
  9. select 标签选中 jquery
  10. jQuery插件——ajax