开发者

mybatis连接mysql的实现过程

开发者 https://www.devze.com 2024-10-29 14:21 出处:网络 作者: xvwen
目录myBATis连接数据库配置Maven的pom文件,导入依赖的工具包定义mybatis框架的配置文件mybatis-config.XML配置对象映射文件UserMapper.xml编写数据库连接代码总结mybatis连接数据库
目录
  • myBATis连接数据库
    • 配置Maven的pom文件,导入依赖的工具包
    • 定义mybatis框架的配置文件mybatis-config.XML
    • 配置对象映射文件UserMapper.xml
    • 编写数据库连接代码
  • 总结

    mybatis连接数据库

    配置Maven的pom文件,导入依赖的工具包

    配置pom文件可以免去下载和导入各种依赖包(jar)的操作,具体可以去看之前的Maven的相关文章。

    <dependencies>
        <!--junit单元测试坐标-->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <!--mysql连接数据库的依赖坐标坐标-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-Java</artifactId>
          <version>8.0.11</version>
        </dependency>
    
        <!--导入mybatis坐标-->
        <dependency>
          <groupId>org.mybatis</grouandroidpId>
          <artifactId>mybatis</artifactId>
          <version>3.5.5</version>
        </dependency>
    
        <!--导入druid连接池-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.24</version>
        </dependency>
    
        <!--导入dbutils坐标-->
        <dependency>
          <groupId>commons-dbutils</groupId>
          <artifactId>commons-dbutils</artifactId>
          <version>1.6</version>
        </dependency>
    
    
      </dependencies>
    • junit单元测试,可以方便我们测试每个sql语句的函数。
    • mysql-connect-xxx时jdbc的连接驱动的jar包,是连接数据库的必要条件
    • mybatis坐标是数据库操作框架,简化jdbc的操作,当然如果你习惯jdbc操作的化可以导入jdbc的坐标
    • druid连接池,连接池是一个容器,优化线程的工具,不必为每个操作创建单个的数据库连接。
    • dbutil也是jdbc的简化工具包,使查询和更新变得更简单,并能处理查询的结果集。

    定义mybatis框架的配置文件mybatis-config.xml

    该文件在maven项目目录结构的resoueces目录下,主要实现数据库连接和配置sql语句简化数据库操作的。

    mybatis连接mysql的实现过程

    IDEA实现Maven项目创建并连接Tomcat

    <?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">javascript
    <configuration>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
          <!--连接配置->
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
     	<!--mappper映射路径-->
        <mapper resource="UserMapper.xml"/>
      </mappers>
    </configuration>

    需要修改的有两个部分: 

    连接配置(配置mysql连接的信息和jdbc差不多)${driver}修改为jdbc配置使的Driver对象的内容。

    ${url}也是jdbc连接数据时的配置,下面两个username和password是数据库的登录名(root)和密码。其实这些和jdbc一样。 

    mapper映射路径(将sql语句封装为一个带参方法的配置文件的路径)标签中的resource的内容要修改,改为对象映射文件(如UserMapper)的路径。有几个文件就要重写几个路径。

    • 注意带$的要修改,和jdbc的一样mysql的8.0以上的driver=“com.mysql.cj.jdbc.Driver”;url=“jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC”。db1是数据库的名称,相当于”use db1”的sql语句后面要有问号分割,数据库密码要正确。
    • mappers下的mapper的resource路径要修改成对象映射的xml路径。即下面的UserMapper.xml路径

    配置对象映射文件UserMapper.xml

    该文件的作用时将数据的表映射为javabean的对象。

    <?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="test">
      <select id="selectAll" resultType="model.User">
        select * from Blog where id = #{id}
      </select>
     
    </mapper>

    该文件就是将sql语句封装为一个带参方法,操作数据库是直接调用。mapper标签就是sql语句id就是被封装的方法。

    需要修改的有三个地方:namespace,id,resultType,sql语句

    • namespace属性,如果你熟悉mybatis你就知道使用mapper代理开发时这里需要修改为映射对象的路径(否则随便命名test即可,也可以直接使用默认的)。
    • id是sql封装后的方法名自己定义。
    • resultType定义查询结果的返回的数据类型MyBatis查询结果resultType返回值类型详细介绍感谢作者留兰香丶

    有string,list,javabean,map等类型。我们直接返回javabean即可(返回javabean时要填写javabean的路径)即model.User。 

    sql语句中的#{}是占位符,和jdbc的?一样传递参数的。Blog改为对应的数据库表名,这个sql语句要能在mysql命令框运行的(带参数的话)

    • 看一下我的javabean路径:

    mybatis连接mysql的实现过程

    namespace可以随便命名,select的id要唯一,resulttype为对应javabean的User类即model.User。该文件的名称为UserMapper.xml。

    编写数据库连接代码

    package mybatis;
    import model.User;
    
    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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class MybatisTest {
    
        @Test
        public void method() throws IOException {     //单元测试不能要static
            //mybatis框架都在xml配置文件中加载配置文件
            //从 XML 文件中构建 SqlSessionFactory 的实例
         www.devze.com   String resource = "mybatis-config.xml";
            InputStream inputStream = null;
    
            inputStream = Resources.getResourceAsStream(resource);
    
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            //从 SqlSessionFactory 中获python取 SqlSession
            SqlSession session = sqlSessionFactory.openSession();
    
    
            //执行sql
            List<User> users=session.selectList("test.selectAll",2);
    
            System.out.println(users);
    
            //释放资源
            session.close();
    
        }
    }
    

    测试代码中只有执行sql的步骤需要修改,在前面的配置文件中test时namespace随便名命名的,selectAll是id(封装的方法)selectList是sqlsession的处理查询结果集的方法,将查询对象存储到list集合中。并用List的泛型类接收。

    我先演示一个不带参数的查询:将sql语句改为:select * from user,删除执行sql中的1(查询所有)

    • 如图所示运行结果:

    mybatis连接mysql的实现过程

    • 对应数据中的user表:

    mybatis连接mysql的实现过程

    原样运行的话是有参数的,在方法后面直接添加一个参数就可以了,如图上的提示paramter为参数。

    • 填入一个数字2.

    mybatis连接mysql的实现过程

    • 如图运行结果:

    mybatis连接mysql的实现过程

    由上上个图可以看出,第三个参数变为了rowBounds,有兴趣的可以了解一下,但是我们知道的是,肯定不是传递第二个参数的对象。那么封装sql语句是有多个参数该怎么办呢?

    http://www.devze.com

    就需要使用mybatis的mapper代理开发了。用于解决传递多个参数的问题。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号