AI智能
改变未来

idea快速创建mybaits

1.在mysql中创建一个数据库数据库名为zy;且在数据库zy中创建一个数据表users,数据表的结构如下。

2、idea创建一个项目,并命名zyproject。

(1)“file->project->Maven,如下图所示。

(2) 单击“next”进入,进入项目名称、存放路径、工作组id等如下图所示。

 

(3) 根据提示,把name=zyproject;location=D:\\Java\\zyproject;GroupId=qiin.com;ArtifactId=zyproject如上图所示。

(4) 单击“next”进入maven设置界面,如下图所示。

(5) maven设置根据需要设置为自己安装的maven,我的设置如上图所示。

(6) 单击“Finish”结束项目创建。如下图所示。

(7) 在main文件夹下创建以下几个文件夹,通过“file->Project Structure->Modules”,如下图所示。

正在上传…重新上传取消

分别在main目录下创建java(sources类型)、Resources(Resources类型)、Tests(Tests类型)、Test Resources(Test Resources类型)。

(8) 创建好这些文件夹后要给它们分别赋相应的类型,类型如下。

 

(9) 创建好返回到主界面,项目的结构如下图所示。

(10)在src\\main\\java目录中创建两数据包分别是qin.com.entity和qin.com.dao,创建好后工程目录结构如下。

到此maven工程创建结束。

3.添加 Mybatis3.4.5 的坐标(添加mybatis类库)

 

(1)进入网站https://mvnrepository.com/如下图所示。

(2)在搜索框中输入mybatis,然后单击“Search”,如下图所示。

(3)单击超链接文本“org.mybatis>mybatis”即进行mybatis相关界面。如下图所示。

(4)单击Central选项卡中的3.5.4,即进入3.5.4相关的界面,如下图所示。

(5)然后把Maven选项卡中的内容。

<!– https://mvnrepository.com/artifact/org.mybatis/mybatis –>

<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis</artifactId>

    <version>3.4.1</version>

</dependency>

复制到maven工程中pom.xml文件中。

按同样的方式添加mysql坐标,添加mybatis和mysql坐标结束后,工程中的pom.xml内容如下。

<?xml version=\”1.0\” encoding=\”UTF-8\”?>

<project xmlns=\”http://maven.apache.org/POM/4.0.0\” xmlns:xsi=\”http://www.w3.org/2001/XMLSchema-instance\”

  xsi:schemaLocation=\”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\”>

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>qin.com</groupId>

  <artifactId>qinmybatis</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>war</packaging>

 

  <name>qinmybatis Maven Webapp</name>

  <!– FIXME change it to the project\’s website –>

  <url>http://www.example.com</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven.compiler.source>1.7</maven.compiler.source>

    <maven.compiler.target>1.7</maven.compiler.target>

  </properties>

 

  <dependencies>

    <!– https://mvnrepository.com/artifact/mysql/mysql-connector-java –>

    <dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>5.1.27</version>

    </dependency>

    <!– https://mvnrepository.com/artifact/org.mybatis/mybatis –>

    <dependency>

      <groupId>org.mybatis</groupId>

      <artifactId>mybatis</artifactId>

      <version>3.4.1</version>

    </dependency>

  </dependencies>

 

  <build>

    <finalName>qinmybatis</finalName>   

  </build>

</project>

4.编写Users实体类

创建users数据表对应的实体类。

   在qin.com.entity数据包进行创建,要注意这个Users类中的成员变量名称、类型要和users数据表中的字段名和类型要一样。所以在创建数据表时字段一定不能为汉字或带有空格。Users.java代码如下。

package qin.com.entity;

public class Users {

    private  int id;

    private  String name;

    private  String pass;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getPass() {

        return pass;

    }

    public void setPass(String pass) {

        this.pass = pass;

    }

    @Override

    public String toString() {

               return \”User{\” + \”uid=\” + uid + \”, uname=\’\” + uname + \’\\\’\’ + \”, upass=\” + upass + \’}\’;

    }

}

这样与users数据表对应的实体类就创建结束了。

5.编写持久层接口 UsersDao

该接口中所有方法要下面定义的UsersMapper.xml映射文件中的id的方法一样,该接口主要作用是定义对users数据进行操作的抽象方法,如添加、删除、更新、统计等操作。下面我们我们只定义一个查询操作,代码如下。

package qin.com.dao;

import qin.com.entity.Users;

import java.util.List;

/**

 * 接口中的访法是与我们定义的UsersMapper.xml的操作是对应的

 */

package qin.com.dao;

import qin.com.entity.Users;

import java.util.List;

/**

 * 接口中的访法是与我们定义的UsersMapper.xml的操作是对应的

 */

public interface UsersDao {

   

    /*

    查询users数据表中所有数据

     */

     List<Users> queryAll();   

}

6.创建mybatis约束文件的模板

创建mybatis约束文件的模板主要作用是使得我们快速配置文件,并对配置文件进行语法检测。

一、创建模板文件的准备工作如下。

1、根据下面的地址去下载mybatis的两个约束文件。

http://mybatis.org/dtd/mybatis-3-config.dtd

http://mybatis.org/dtd/mybatis-3-mapper.dtd

下载好文件后要保存在与项目有关的目录中,以便创建模板使用。

二、构建模板文件的过程如下。

1、单击“file->settings\”命令,弹出下面的窗口,如下图所示。

2、单击”Languages & frameworks->Schemas and DTDs”选项如下图所示。

3、单击窗口中project旁边的“+”,会弹出下面的窗口,如下图所示。

按同样的方式,添加另外映射文件约束文件,如下图所示。

最后单击“apply\”应用设置。返回主界面,如下图所示。

4、单击”settings->Editer->File and Code Templates“选项,显示如下图所示的窗口。

5、单击files选项卡下面的”+“来创建一个mybatis配置文件的模板,如下图所示。

mybatis配置文件的内容如下。

<?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>

 

    <typeAliases>

        <package name=\”qin.com.entity\”></package>

    </typeAliases>

    <environments default=\”mysql\”>

        <!–配置数据库连接环境–>

        <environment id=\”mysql\”>

            <transactionManager type=\”JDBC\”></transactionManager>

            <!–数据源:driver、url、username、password–>

            <dataSource type=\”POOLED\”>

                <!– 连接mysql数据库的驱动程序 –>

                <property name=\”driver\” value=\”com.mysql.jdbc.Driver\”></property>

                <!– 连接mysql数据库的地址 –>

                <property name=\”url\” value=\”jdbc:mysql:///qin\”></property>

                <!– 连接mysql数据库的管理员 –>

                <property name=\”username\” value=\”root\”></property>

                <!– 连接mysql数据库的管理员的密码 –>

                <property name=\”password\” value=\”admin\”></property>

            </dataSource>

        </environment>

    </environments> 

    <mappers>

接下来按同样方式创建mybatis的映射文件模板mybatis-mapper.xml。mybatis-mapper.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=\”qin.com.dao.UsersDao\”>

     <resultMap id=\”userBean\” type=\”Users\”>  

        <id property=\”id\” column=\”id\”></id>

        <result property=\”name\” column=\”name\”></result>

        <result property=\”pass\” column=\”pass\”></result>

  </resultMap>

    <!– 查询数据表中所有数据 –>

  <select id=\”queryAll\” resultMap=\”userBean\”>

      select * from users

    </select>   

</mapper>

创建结束后在文件列表中就出现我们创建的模板了,如下图所示。

到些我们创建mybatis的配置文件和映射文件的模板就创建好了。

6.创建映射文件

在数据包qin.com.entity数据中创建映射文件,UsersMapper.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=\”qin.com.dao.UsersDao\”>

     <resultMap id=\”userBean\” type=\”Users\”>  

        <id property=\”id\” column=\”id\”></id>

        <result property=\”name\” column=\”name\”></result>

        <result property=\”pass\” column=\”pass\”></result>

  </resultMap>

    <!– 查询数据表中所有数据 –>

  <select id=\”queryAll\” resultMap=\”userBean\”>

      select * from users

    </select>   

</mapper>

说明:我们在UsersMapper.xml里面配置了对数据表users进行增删改查操作,分别是insertUser、deleteUserByName、updateUserById和queryAll

SQL 定义在 usersMapper.xml 文件中,里面的配置作用如下。

<mapper> : XML 的根元素,属性 ηamespace 定义了UsersDao接口的完整路径(qin.com.dao.UsersDao)。

• <select >元素 :我们所定义的一个 SELECT 查询。

• id 属性:定义了当前 SELECT 查询的唯一一个(queryAll它与UsersDao接口中的queryAll9()方法是对应)

result Type :定义了当前查询的返回值类型 ,此处就是指 userBean ,前面配

置中提到的别名主要用于这里,如果没有设置 ,此处就需要写 resu lt Type=”qin.com.entity.Users

select id, …: 查询 SQL 语句。

创建好实体和 Mapper.xml 接下来要mybatis主配置文件中添加下面的内容。

代码如下。

<mappers>

          <!– 映射文件地址要记住把映射文件所在数据包中的\”.\”换成“/” –>

           <mapper resource=\”qin/com/entity/usersMapper.xml\”></mapper>

    </mappers>

7.编写mybatis.xm配置文件

该文件要放在工程目录结构中的Resources目录中,内容如下。该配置文件作用是设置mybatis环境,即连接mysql数据相关设置。

<?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>

 

    <typeAliases>

        <package name=\”qin.com.entity\”></package>

    </typeAliases>

    <environments default=\”mysql\”>

        <!–配置数据库连接环境–>

        <environment id=\”mysql\”>

            <transactionManager type=\”JDBC\”></transactionManager>

            <!–数据源:driver、url、username、password–>

            <dataSource type=\”POOLED\”>

                <!– 连接mysql数据库的驱动程序 –>

                <property name=\”driver\” value=\”com.mysql.jdbc.Driver\”></property>

                <!– 连接mysql数据库的地址 –>

                <property name=\”url\” value=\”jdbc:mysql:///qin\”></property>

                <!– 连接mysql数据库的管理员 –>

                <property name=\”username\” value=\”root\”></property>

                <!– 连接mysql数据库的管理员的密码 –>

                <property name=\”password\” value=\”admin\”></property>

            </dataSource>

        </environment>

    </environments> 

    <mappers>

        <!– 映射文件地址要记住把映射文件所在数据包中的\”.\”换成“/” –>

        <mapper resource=\”qin/com/entity/usersMapper.xml\”></mapper>

    </mappers>

</configuration>

配置简单说明

1、<typeAliases >元素下面配置了 个包的别名,通常确定 个类的时候需要使用类的全限定名称 ,例如qin.com.entity 。在 MyBatis 需要频用到类的全限定名称,为了方便使用,我们配置了 qin.com.entity包,这样配置后,在使用类的时候不需要写包名的部分,只使用 Users即可。

2、<env ir onments >环境 配置中 主要 配置了数据库连接,数据库的 urljdbc:mysql://localhost:3306/zy ,使用的是本机 MySQL 中的 mybatis数据库,后面的 username password 分别是数据库的用户名和密码(如果你的数据库用户名及密码和这里的不 样,请修改为自己数据库可用的用户名和密码〉<mappers >中配置了 个包含完整类路径的UsersMapper.xml ,这是 MyBatisSQL 语句和映射配置文件.

3、  <environments default=\”mysql\”>中的dafault的值一定要与<environment id=\”mysql\”>中的id 的值一样。

注意:要在pom.xml中加入如下代码

 

<resources>

      <resource>

        <directory>src/main/java</directory>

        <includes>

          <include>**/*.xml</include>

        </includes>

      </resource>

</resources>

上面内容中

directory指示存放资源的路径   

<directory>src/main/java</directory>

include指示资源:如<include>**/*.xml</include>

 

工程目录结构如下。

 

8.创建mybatis工具

我们在qin.com数据包中创建一个DBtool.java类用于连接数据库和返回,主要目的代码重用,代码如下。

package qin.com;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

import java.io.Reader;

 

public class DBtools {

    //定义会话工厂SqlSessionFactory对象

    private static SqlSessionFactory sqlSessionFactory;

    static { //创建静态块,它比类的构造方法先执行

        try {

            //通过文件流获取mybatis配置文件(mybatis.xml放在Resources文件夹中)

            Reader reader = Resources.getResourceAsReader(\”mybatis.xml\”);

            //实例化会话工厂,因为通过会话工厂才获取 SqlSession会话,这样才能通过 SqlSession对象对数据表进行操作。

            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

    /**

     * 返回会话工厂

     * @return

     */

    public static SqlSessionFactory getSqlSessionFactory(){

        return sqlSessionFactory;

    }

 

    /**

     * 返回会话

     * @return

     */

    public  static SqlSession getSqlSession(){

        return getSqlSessionFactory().openSession();

    }

}

 

9.创建测试类

在qin.com.Test数据包中创建一个测试类UsersTest.java,代码如下。

package qin.com.entity;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import qin.com.DBtools;

import qin.com.dao.UsersDao;

import java.sql.SQLException;

 

public class UserTest {

    public  static  void main(String[] args) throws SQLException {

        //1.创建sqlsessionFactory

        SqlSessionFactory sqlSessionFactory = DBtools.getSqlSessionFactory();

        //2.创建SqlSession

        SqlSession session = sqlSessionFactory.openSession();

        //SqlSession session = DBtools.getSqlSession();可以省略前面两个步骤

        //3.session 中创建相应的接口代理类,即mapper对象

        UsersDao usersDao = session.getMapper(UsersDao.class);

        //通过mapper对象usersDao接口中的方法对数据表users进行读操作

         List<Users> list=usersDao.queryAll();

         for(Users users:list){

               System.out.println(\”uid=\”+users.getUid()+\”   name=\”+users.getUname()+\” pass=\”+users.getUpass());

          }

       // System.out.println(usersDao.queryAll());

    }

 整个工程的完整目录结构如下图所示。

运行UsersTest.java测试类后得到如下结果。

至此mybatis入门到此结束。

10.mybatis工作原理

 

Mybatis工作原理图,如下图所示。

工作流程如下。

1、加载  mybatis  全局配置文件(数据源、事务、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration,和一个个 MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。

2、SqlSessionFactoryBuilder 通过 Configuration 对象生成 SqlSessionFactory,用来开启 SqlSession。 

3、SqlSession 对象完成和数据库的交互: 

(1) 用户程序调用 mybatis 接口层api(即 Mapper 接口中的方法) 

(2) SqlSession 通过调用 api 的 Statement ID 找到对应的 MappedStatemen 对象

(3) 通过 Executor(负责动态SQL的生成和查询缓存的维护)将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象

(4) JDBC执行sql。

借助 MappedStatement 中的结果映射关系,将返回结果转化成 HashMap、JavaBean 等存储结构并返回。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » idea快速创建mybaits