mybatis入门(一)

一、前言

​ 本教程适合用于已经学习了javaweb三层开发和maven简单入门的同学学习。在三层开发中,分为表现层,业务逻辑层和数据访问层,对应的类一般为servlet、service、dao,mabtis框架就是对dao层进行优化的框架,将之前较为复杂而重用率很高的数据库连接操作代码进行封装,我们只需要关心sql语句的编写,而不再去关心加载驱动、创建连接(连接池)、创建执行对象等等一系列的操作。我们可以把它当成是一个强大的工具类来学习,会容易入手得多。

二、环境搭建准备
  1. 前期准备

    从官网下载mybatis压缩包。在2013年的时候mybatis迁移到了GitHub上,所以我们可以登陆一下网址进行下载:https://github.com/mybatis/mybatis-3/releases。本文演示用的是3.4.5版本。如果是用的eclipse就将jar包导入即可,本文用的是maven项目开发,直接导入即可

  2. 建立数据库和表

    CREATE DATABASE web_test2;
    USE web_test2;
    CREATE TABLE `student` (
     `sid` int(11) NOT NULL AUTO_INCREMENT,
     `sname` varchar(20) DEFAULT NULL,
     `sex` varchar(10) DEFAULT NULL,
     `birthday` date DEFAULT NULL,
     `cno` int(11) DEFAULT NULL,
     PRIMARY KEY (`sid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

    数据自行添加。

三、入门案例
  1. xml文件的配置

    第一步:创建maven工程并导入坐标

    <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.4.5</version>
    </dependency>

    第二步:创建实体类Javabean和dao的接口

    Student类:

    public class Student implements Serializable {
    
       private int sid;
       private String sname;
       private String sex;
       private Date birthday;
       private int cno;
    
       @Override
       public String toString() {
           return "Student{" +
                   "sid=" + sid +
                   ", sname='" + sname + '\'' +
                   ", sex='" + sex + '\'' +
                   ", birthday=" + birthday +
                   ", cno=" + cno +
                   '}';
       }
    
       public int getSid() {
           return sid;
       }
    
       public void setSid(int sid) {
           this.sid = sid;
       }
    
       public String getSname() {
           return sname;
       }
    
       public void setSname(String sname) {
           this.sname = sname;
       }
    
       public String getSex() {
           return sex;
       }
    
       public void setSex(String sex) {
           this.sex = sex;
       }
    
       public Date getBirthday() {
           return birthday;
       }
    
       public void setBirthday(Date birthday) {
           this.birthday = birthday;
       }
    
       public int getCno() {
           return cno;
       }
    
       public void setCno(int cno) {
           this.cno = cno;
       }
    }

    dao接口:

    public interface IStudentDao {
       /**
        * 查询所有操作。(只需要接口,不需要实现类)
        * @return
        */
       List<Student> findAll();
    }

    第三步:创建Mybatis的主配置文件SqlMapConifg.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">
               <!--配置事务的类型-->
               <transactionManager type="JDBC"></transactionManager>
               <!--配置数据源(连接池)-->
               <dataSource type="POOLED">
                   <!--配置连接数据库的4个基本信息-->
                   <property name="driver" value="com.mysql.jdbc.Driver">   </property>
                   <property name="url" value="jdbc:mysql://localhost:3306/web_test2"></property>
                   <property name="username" value="root"></property>
                   <property name="password" value="123"></property>
               </dataSource>
           </environment>
       </environments>
       <mappers>
           <mapper resource="com/stevensam/dao/IStudentDao.xml"></mapper>
       </mappers>
    </configuration>

    第四步:创建映射配置文件IUserDao.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="com.stevensam.dao.IStudentDao">
       <!--配置查询所有学生的方法-->
       <select id="findAll" resultType="com.stevensam.domain.Student">
           SELECT * FROM student;
       </select>
    </mapper>

    第五步:在test中新建一个包名com.stevensam.test,建一个测试类:

    public class MybatisTest {
    public static void main(String[] args) throws Exception {
       //1.读取配置文件
       InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
       //2.创建SqlSessionFactory工厂
       SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
       SqlSessionFactory factory = builder.build(in);
       //3.工厂生产SqlSession对象
       SqlSession session = factory.openSession();
       //4.使用SqlSession创建Dao接口的代理对象
       IStudentDao mapper = session.getMapper(IStudentDao.class);
       //5.使用代理对象执行方法
       List<Student> studentList = mapper.findAll();
       for (Student stu:studentList) {
           System.out.println(stu);
       }
       //6.释放资源
       session.close();
       in.close();
    }
    }

    第六步:执行MybatisTest类
    执行结果

  2. 注意事项

    第一个:创建IUserDao.xmlIUserDao.java时名称只是为了统一,关键在于namespace的值。在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper,所以:IUserDao 和 IUserMapper是一样的

    第二个:在idea中创建目录的时候,它和包是不一样的,

    包在创建时:com.stevensam.dao它是三级结构

    目录在创建时:com.stevensam.dao是一级目录

    第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
    第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
    第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名

  3. 注解开发方式

    注解开发在xml方式的基础上,稍作修改即可。

    (1)删除IStudentDao.xml

    (2)修改SqlMapConfig.xml中的mappers标签的属性为class,注意的是值包名不能是“/”来连接,而是以点。

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
           如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
       -->
       <mappers>
           <mapper class="com.stevensam.dao.IStudentDao"></mapper>
       </mappers>

    (3)关键一步,在IStudentDao中在方法上面添加一行注解代码即可,如下:

    @Select("select * from student")
       List<Student> findAll();

    (4)执行结果
    执行结果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值