MyBatis 是一款优秀的持久层框架,它可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录。那mybatis怎么连接数据库?接下来我们就来给大家讲解一下这方面的内容。
1.首先创建一个maven项目
在pom.xml导入依赖
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> </dependencies>
在mybatis-config.xml中根据自己的需要设置一些setting,配置相应的环境,还有映射文件。
<?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> <!-- 引入外部资源文件 --> <properties resource="jdbc.properties"></properties> <!-- 设置驼峰匹配 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <!-- 配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 配置连接信息 --> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置映射文件:用来配置sql语句和结果集类型等 --> <mappers> <mapper resource="org/seckill/mapper/dataDao.xml"/> </mappers> </configuration>
注意:这个地方的xml文件就是一会要写sql语句的xml,这个路径根据自己的配置进行调整。
3.在resources下配置一个properties
这个用来写你数据库连接的host、user、password
4.在java下创建一个包,里面写dao层的接口。【我这个包起名的时候很蠢,大家一定按照规则写包名!!】
dataDao接口就是用来接收数据库中的数据的格式问题。
举个例子:我自己的数据库里是一个含有年级的学生信息(里面有id name 年级 分数等等)
我要取出所有年级为高中的学生信息。
package org.seckill.mapper; import org.seckill.entity.Data; import java.util.List; public interface dataDao { List<Data> selectAll(String grade);}
通过传参数grade:小学/初中/高中 ,最后从数据库导出的时候,就会被封装为Data类型的一个列表。
那么Data数据类型是什么?
我在entity包中创建了一个Data类,就是把所有的一条sql语句中的id、name、年级、分数等封装在一起。。(这个大家都懂)
Data类里面有:
private Long id;private int mark;private String names;
等等,包括他们的get、set方法。
5. 在同样的mapper包下面,闯将一个dataDao的xml与接口对应。dataDao.xml里面是用来写sql的。
<?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="org.seckill.mapper.dataDao"> <!--查询所有--> <select id="selectAll" parameterType="String" resultType="org.seckill.entity.Data"> select * from A where grade=#{grade}; </select> </mapper>
namespace是对应的接口名字。#{grade}就是第4步在dataDao中传入的年级。
6.由于只用了mybatis,所以我们需要自己创建会话工厂
在主函数中,或者单独写一个函数封装连接功能。
String resource = "mybatis-config.xml"; InputStream inputStream = null; SqlSession session = null; List<Data> all = null; try { inputStream = Resources.getResourceAsStream(resource); //使用流对象创建一个会话工厂 SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream); //session就是程序员与数据库交互的入口 session = sf.openSession(); dataDao mapper = session.getMapper(dataDao.class); all = mapper.selectAll("高中"); } catch (IOException e) { e.printStackTrace(); } finally { session.commit(); //关闭会话,释放资源 session.close(); }
最后所有拿到的数据就被放在
List<Data> all
这个list中了,就可以进一步进行处理。
这样mybatis就链接mysql数据库了,MyBatis 是目前 Java 持久框架的首选,它可以满足操作数据库的所有需求,并且提高了代码的可维护性!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: