mybatis入门百分百

  • 2019 年 10 月 11 日
  • 笔记

今天重新返回来看自己的mybatis,总结了一些更好入门的办法,下面用最简单的方法带领大家入门。
此处先引入类包的关系图片
在这里插入图片描述

1.构建一个==普通==maven项目

构建好之后向pom.xml添加一下依赖

          <!--打包方式-->      <packaging>jar</packaging>        <dependencies>          <!--引入mybatis-->          <dependency>              <groupId>org.mybatis</groupId>              <artifactId>mybatis</artifactId>              <version>3.5.2</version>          </dependency>          <!--mysql-->          <dependency>              <groupId>mysql</groupId>              <artifactId>mysql-connector-java</artifactId>              <version>8.0.15</version>          </dependency>            <!--日志-->          <dependency>              <groupId>log4j</groupId>              <artifactId>log4j</artifactId>              <version>1.2.17</version>          </dependency>          <!--测试-->          <dependency>              <groupId>junit</groupId>              <artifactId>junit</artifactId>              <version>4.12</version>          </dependency>      </dependencies>

2.创建数据库,并创建好实体类

  /**  *@author xiaoxie  *@date  *@return  mybaits 入门  */  //实体类需要跟表明一致  public class User {      private Integer id;        private String username;        private Date birthday;        private String sex;        private String address;        public Integer getId() {          return id;      }        public void setId(Integer id) {          this.id = id;      }        public String getUsername() {          return username;      }        public void setUsername(String username) {          this.username = username;      }        public Date getBirthday() {          return birthday;      }        public void setBirthday(Date birthday) {          this.birthday = birthday;      }        public String getSex() {          return sex;      }        public void setSex(String sex) {          this.sex = sex;      }        public String getAddress() {          return address;      }        public void setAddress(String address) {          this.address = address;      }        @Override      public String toString() {          return "User{" +                  "id=" + id +                  ", username='" + username + ''' +                  ", birthday=" + birthday +                  ", sex='" + sex + ''' +                  ", address='" + address + ''' +                  '}';      }  }  

==切记实体类与数据库相互对应==

3.创建一个dao

==这里我们先弄明白最简单的查询==

    /**  *@author xiaoxie  *@date  *@return   * 用户持久层接口  */  public interface UserDao {    //    查询所有      @Select(select * from user)      List<User> findAll();    }  

4.在resources文件夹下面建立一个与一个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">  <!--mybatis主配置文件-->  <configuration>      <!--配置环境-->      <environments default="mysql">          <!--配置mysql的环境-->          <environment id="mysql">              <!--配置事务类型-->              <transactionManager type="jdbc"></transactionManager>                <!--配置数据源   连接池-->              <dataSource type="POOLED">                      <!--配置连接数据库的基本信息-->                  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                  <property name="url" value="jdbc:mysql://localhost:3306/test1?serverTimezone=GMT%2B8"/>                  <property name="username" value="root"/>                  <property name="password" value="root"/>              </dataSource>          </environment>      </environments>        <!--映射配置文件地址 映射配置文件是每个dao的配置文件-->      <mappers>          <mapper resource="cn/com/scitc/dao/UserDaoMapper.xml"></mapper>      </mappers>        <!--采用注解的方式  应该使用class属性指定被注解的dao全限定类名-->      <mappers>          <mapper class="cn.com.scitc.dao.UserDao"></mapper>      </mappers>  </configuration>

这里讲解一一下里面的关系和作用

1.约束文件–可以直接从网上复制粘贴

<?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">
  1. mybatis主配置文件–相当于最外层的一个容器,所有的事务活动都在里面
<configuration>  xxxxxx  </configuration>
  1. 配置环境 —相当于启动的准备
<environments default="mysql">  ......xxxxx  </environments>

4.配置mysql的环境 –配置mysql的类型
==注意== environment 的id必须与environments的 defualt相同

<environment id="mysql">  xxxxx  </environment>

5.配置事务类型 –默认为jdbc

                <transactionManager type="jdbc"></transactionManager>  

6.配置数据源

 <dataSource type="POOLED">  xxxx常用的url  username  passsword即可    </ <dataSource >

7.映射地址

 <!--映射配置文件地址 映射配置文件是每个dao的配置文件-->      <mappers>          <mapper resource="cn/com/scitc/dao/UserDaoMapper.xml"></mapper>      </mappers>        <!--采用注解的方式  应该使用class属性指定被注解的dao全限定类名-->      <mappers>          <mapper class="cn.com.scitc.dao.UserDao"></mapper>      </mappers>

注意:1.采用xml的格式需要用resources指定映射文件位置

 <mappers>          <mapper resource="cn/com/scitc/dao/UserDaoMapper.xml"></mapper>      </mappers>

2.采用注解的方法则用class指定映射文件位置

 <mappers>          <mapper class="cn.com.scitc.dao.UserDao"></mapper>      </mappers>

4.在resources下面创建与类相同的dao包,并在dao包下面创建映射文件UserDaoMapper.xml

<!DOCTYPE mapper          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  <!--namespace dao权限类名===别名-->  <mapper namespace="cn.com.scitc.dao.UserDao">      <!--配置查询所有-->      <select id="findAll" resultType="cn.com.scitc.domian.User" >        select * from user      </select>  </mapper>

注意:
1.约束文件–可以直接从网上复制粘贴
2.mapper文件都以mapper进行配置 namespaces是指定我们的dao层中的具体接口,有了它,就能够识别是哪一个dao被调用。
3.接下来就是写出语法
xml <select id="findAll" resultType="cn.com.scitc.domian.User" > select * from user </select>
警告:id是接口中定义的方法。
resultType是指定的实体类

测试

    public class MybatisTest {        public static void main(String[] args ){  //        1.读取配置文件          try {              InputStream in = Resources.getResourceAsStream("mybatis-Config.xml");  //        2.创建SqlSessionFactory工厂              SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();              SqlSessionFactory factory = builder.build(in);  //        3.使用工厂产生SqlSession对象              SqlSession sqlSession = factory.openSession();  //        4.使用SqlSession创建Dao接口代理对象              UserDao userDao = sqlSession.getMapper(UserDao.class);  //        5.使用代理对象执行方法              List<User> users = userDao.findAll();              for (User user : users){                  System.out.println("对象有:"+user);              }  //        6.释放资源              sqlSession.close();              in.close();          } catch (IOException e) {              e.printStackTrace();          }      }  }      

在这里插入图片描述