mybatis介绍及快速入门

第一部分相关概念

1.1对象/关系数据库映射(ORM)
ORM完成面向对象的编程语言到关系型数据库的映射,把关系型数据库包装成面向对象的模型;
ORM框架将面向对象的操作转换为底层的SQL操作,即:把持久化对象的保存、修改、删除等操作,转化为对数据库的操作。
1.2Mybatis简介
是一款基于ORM的半自动轻量级持久层框架,支持SQL定制化、存储过程、高级映射,避免了几乎所有的jdbc代码和手动设置参数以及获取结果集,可以使用简单的xml和注解来配置和映射原生类型、接口和java的pojo为数据库的记录;
1.3Mybatis历史
原是apache的开源项目iBatis,2010年迁移到google code,2013年迁移到Github
1.4Mybatis的优点
Mybatis是一个半自动化的持久层框架;
核心sql还是需要自己优化,sql和java代码分离,一个专注业务一个专注数据;
也完成了对jdbc的封装;

第二部分Mybatis基本应用

2.1快速入门
  1. 添加Mybatis的坐标
  2. 创建user数据表
  3. 编写user实体类
  4. 编写映射文件UserMapper.xml
  5. 编写核心文件SqlMapConfig.xml
  6. 编写测试类
2.1.1环境搭建
  • 新建maven项目,导入Mybatis的坐标和其他相关坐标
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding> 
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--mybatis坐标-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<!--mysql驱动坐标-->
<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.6</version> 
    <scope>runtime</scope>
</dependency>
<!--单元测试坐标-->
<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope>
</dependency>
<!--⽇志坐标-->
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.12</version>
</dependency>
  • 创建user表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `birthday` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  • 编写user实体类
public class User { 
 private int id; 
 private String username; 
 private String password;
 //省略get个set⽅法
}

编写UserMapper映射文件

<?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">
<mapper namespace="userMapper"> 
 	<select id="findAll" resultType="com.lagou.domain.User"> 
 		select * from User 
 	</select>
</mapper>
  • 编写Mybatis核心文件SqlMapConfig.xml
<!DOCTYPE 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:///test"/> 
 <property name="username" value="root"/>
 <property name="password" value="root"/> 
 </dataSource> 
 </environment> 
 </environments> 
 
 <mappers>
 <mapper resource="com/lagou/mapper/UserMapper.xml"/>
 </mappers>
</configuration>
  • 测试代码
//加载核⼼配置⽂件
InputStream resourceAsStream =
Resources.getResourceAsStream("SqlMapConfig.xml");
//获得sqlSession⼯⼚对象
SqlSessionFactory sqlSessionFactory = new 
 SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执⾏sql语句
List<User> userList = sqlSession.selectList("userMapper.findAll");
//打印结果
System.out.println(userList);
//释放资源
sqlSession.close();
2.1.2增删改查操作
  • 新增
    1)编辑UserMapper映射文件
<insert id="add" parameterType="com.lagou.domain.User"> 
    insert into user values(#{id},#{username},#{password}) 
 </insert>

2)新增操作的java代码

InputStream resourceAsStream =
Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new
 SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
int insert = sqlSession.insert("userMapper.add", user);
System.out.println(insert);
//提交事务
sqlSession.commit();
sqlSession.close();

3)注意事项

  1. 插入使用insert标签,还有update delete select;
  2. 映射文件中要使用parameterType属性,指定插入数据的数据类型;
  3. 涉及到数据库数据变化的,需要使用sqlSession对象显示的提交事务:sqlSession.commit()

日拱一卒,功不唐捐;小伙伴们一起学习起来

领取源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员进击中

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值