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</groupid>
<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语句简化数据库操作的。

<?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="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你就知道使用时这里需要修改为映射对象的路径(否则随便命名test即可,也可以直接使用默认的)。
- id是sql封装后的方法名自己定义。
- resulttype定义查询结果的返回的数据类型mybatis查询结果resulttype返回值类型详细介绍
有string,list,javabean,map等类型。我们直接返回javabean即可(返回javabean时要填写javabean的路径)即model.user。
sql语句中的#{}是占位符,和jdbc的?一样传递参数的。blog改为对应的数据库表名,这个sql语句要能在mysql命令框运行的(带参数的话)
- 看一下我的javabean路径:

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 的实例
string resource = "mybatis-config.xml";
inputstream inputstream = null;
inputstream = resources.getresourceasstream(resource);
sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(inputstream);
//从 sqlsessionfactory 中获取 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(查询所有)
- 如图所示运行结果:

- 对应数据中的user表:

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

- 如图运行结果:

由上上个图可以看出,第三个参数变为了rowbounds,有兴趣的可以了解一下,但是我们知道的是,肯定不是传递第二个参数的对象。那么封装sql语句是有多个参数该怎么办呢?
就需要使用了。用于解决传递多个参数的问题。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论