Mybatis学习----原生Mybatis如何实现

Mybatis入门学习1. 框架介绍2. mybatis介绍3. mybatis快速入门【重点】4. 映射文件概述5. mybatis原生的增删改查【了解】6. 抽取工具类【spring可以代替】7. 核心配置文件8. 核心api概述9. mybatis实现dao层 传统dao(接口+实现类) 接口dao(接口)【重点】 10. 基于接口增删改查一 框架简介为什么学习框架?简化代码,提高效率二 Mybatis简介2.1 ORM概述ORM(obje
摘要由CSDN通过智能技术生成

Mybatis入门学习

1. 框架介绍

2. mybatis介绍

3. mybatis快速入门

4. 映射文件概述

5. mybatis原生的增删改查

6. 抽取工具类【spring可以代替】

7. 核心配置文件

8. 核心api概述

9. mybatis实现dao层
	传统dao(接口+实现类)
	接口dao(接口)
	
10. 基于接口增删改查

一 框架简介

在这里插入图片描述

为什么学习框架?

简化代码,提高效率

二 Mybatis简介

2.1 ORM概述

ORM(object Relational Mapping)对象关系映射

在这里插入图片描述

常用ORM框架有:hibernate(全自动ORM映射)、mybatis(半自动ORM映射)、jpa

2.2 Mybatis介绍

历史

  • MyBatis本是apache的一个开源项目,名为iBatis。
  • 2010年这个项目由apache迁移到了google,并且改名为MyBatis。
  • 2013年迁移到Github。

简介

MyBatis官网地址:http://www.mybatis.org/mybatis-3/

  • mybatis是一款优秀的持久层框架,他不需要像JDBC繁琐编写代码,只需要开发人员关注(接口+sql)
  • 它采用了简单的xml配置+接口方式实现增删改查,开发时我们只需要关注SQL本身

三 Mybatis快速入门

需求
查询数据库user表的所有记录,封装到User对象中。

3.1 步骤分析

  • ① 创建mybatis_db数据库和user表
  • ② 创建java项目,导入jar包
    (mysql驱动、mybatis、log4j日志)
  • ③ 创建User实体类
  • ④ 编写映射文件UserMapper.xml
  • ⑤ 编写核心文件SqlMapConfig.xml
  • ⑥ 编写测试代码

3.2 代码实现

① 创建mybatis_db数据库和user表
/*
SQLyog Enterprise - MySQL GUI v6.03
Host - 5.0.22-community-nt : Database - mybatisdb
*********************************************************************
Server version : 5.0.22-community-nt
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

CREATE DATABASE IF NOT EXISTS `mybatis_db`;

USE `mybatis_db`;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

DROP TABLE IF EXISTS `orders`;

CREATE TABLE `orders` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`uid` INT(11) DEFAULT NULL,
`ordertime` DATETIME DEFAULT NULL,
`money` DOUBLE DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Data for the table `orders` */

INSERT  INTO `orders`(`id`,`uid`,`ordertime`,`money`) VALUES (1,41,'2019-05-20 02:58:02',999.5),(2,45,'2019-02-14 07:58:00',1399),(3,41,'2019-06-01 21:00:02',1666);



/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(32) NOT NULL COMMENT '用户名称',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`sex` VARCHAR(10) DEFAULT NULL COMMENT '性别',
`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY  (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

/*Data for the table `user` */

INSERT  INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (41,'老王','2019-05-27 17:47:08','男','北京'),(42,'王小二','2019-03-02 15:09:37','女','北京金燕龙'),(43,'老李','2019-03-04 11:34:34','女','北京修正'),(45,'传智播客','2019-03-04 12:04:06','男','北京金燕龙'),(46,'王小二','2018-09-07 17:37:26','男','北京TBD'),(48,'小马宝莉','2019-03-08 11:44:00','女','北京修正');


DROP TABLE IF EXISTS `role`;

CREATE TABLE `role` (
`id` INT(11) NOT NULL COMMENT '编号',
`role_name` VARCHAR(30) DEFAULT NULL COMMENT '角色名称',
`role_desc` VARCHAR(60) DEFAULT NULL COMMENT '角色描述',
PRIMARY KEY  (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

/*Data for the table `role` */

INSERT  INTO `role`(`ID`,`role_name`,`role_desc`) VALUES (1,'院长','管理整个学院'),(2,'总裁','管理整个公司'),(3,'校长','管理整个学校');


/*Table structure for table `user_role` */

DROP TABLE IF EXISTS `user_role`;

CREATE TABLE `user_role` (
`uid` INT(11) NOT NULL COMMENT '用户编号',
`rid` INT(11) NOT NULL COMMENT '角色编号',
PRIMARY KEY  (`uid`,`rid`),
KEY `FK_Reference_10` (`rid`),
CONSTRAINT `FK_Reference_10` FOREIGN KEY (`rid`) REFERENCES `role` (`id`),
CONSTRAINT `FK_Reference_9` FOREIGN KEY (`uid`) REFERENCES `user` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

/*Data for the table `user_role` */

INSERT  INTO `user_role`(`uid`,`rid`) VALUES (41,1),(45,1),(41,2);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

② 创建java项目,导入jar包

在这里插入图片描述

③ 创建User实体类
public class User {
   

    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    // 省略 getter、setter、toString
}
④ 编写映射文件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">
<mapper namespace="UserMapper">
    <!--查询所有-->
    <select id="findAll" resultType="com.mybatis.pojo.User">
        select * from user
    </select>

</mapper>
⑤ 编写核心文件SqlMapConfig.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">
<configuration>
    <!--数据库环境配置-->
    <environments default="mysql">
        <!--使用MySQL环境-->
        <environment id="mysql">
            <!--事务管理器:JDBC类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--连接池:内置POOLED-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://192.168.43.212:3306/mybatis_db"></property>
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
            </dataSource>
        </environment>
    </environments>


    <!--加载映射文件-->
    <mappers>
        <mapper resource="com/mybatis/mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>
⑥ 编写测试代码
// 查询所有
@Test
public void testFindAll() throws Exception {
   
    // 1.加载核心配置文件(SqlMapConfig.xml)
    // 2.构建SqlSessionFactory工厂对象
    // 3.通过工厂创建SqlSession会话对象(Connection)
    // 4.执行sql语句
    // 5.释放资源
}
public class UserMapperTest {
   

    // 查询所有
    @Test
    public void testFindAll() throws Exception {
   
        // 1.加载核心配置文件(SqlMapConfig.xml)
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2.构建SqlSessionFactory工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        // 3.通过工厂创建SqlSession会话对象(Connection)
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 4.执行sql语句 (命名空间+id)
        List<User> list = sqlSession.selectList("UserMapper.findAll");
        for (User user : list) {
   
            System.out.println(user);
        }
        // 5.释放资源
        sqlSession.close();
    }
}

在这里插入图片描述

四 Mybatis映射文件概述

在这里插入图片描述

五 Mybatis增删改查

5.1 新增

① 编写映射文件UserMapper.xml
<!--新增-->
<insert id="save" parameterType="com.mybatis.pojo.User">
    insert into user(username,birthday,sex,address)
    values(#{username},#{birthday},#{sex},#{address})
</insert>

② 编写测试代码
// 新增
 @Test
  public void testSave() throws IOException {
   
    //1.加载配置文件
    InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
    // 2.构建SqlSessionFactory工厂对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
    //3.通过工厂创建SqlSession会话对象(Connection)
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //4.执行sql语句(
    User user = new User();
    user.setUsername("jack");
    user.setBirthday(new Date()
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值