mybatis(2)--配置mybatis实现连接数据库查询

时间:2021-08-06 16:59:45

1.新建项目

2.在src下创建一个xml文件 比如这xml文件名为 mybatis.xml

  一下为初始xml文件代码

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis核心配置文件的dtd -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引用jdbc配置文件 该配置文件为连接数据库的数据参数 -->
<properties resource="jdbc.properties" />
<!--环境配置,配置的是开发者模式 -->
<environments default="development">
<environment id="development">
<!-- 声明jdbc事务处理 -->
<transactionManager type="JDBC"/>
<!-- 数据源:数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.driverUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 引用Mapper接口的sql映射文件 -->
<mapper resource="com/ht/mapper/EmpDAO.xml"/>
</mappers>
</configuration>

3. 创建接口类 这里设 接口类是:com.ht.mapper.EmpDAO.class

package com.ht.mapper;

import java.util.List;

import com.ht.vo.EmpVo;

//接口名称必须与对应的XML文件名相同,并且必须在同一个包中
public interface EmpDAO {
/**
* 获取所有的员工信息
* @return EmpVo集合
*
* 方法名称对应xml中的id名称
*/
List<EmpVo> listAll(); }

  

4. 在创建接口类的映射文件 EmpDAO.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis的dtd文件 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace属性: 用于指定指向那个接口 -->
<mapper namespace="com.ht.mapper.EmpDAO">
<!--select标签都对应接口中的一个方法,
id属性:指定接口中具体的方法名,
id属性值必须唯一
resultType:执行sql返回的结果类型
xml的文件名称必须与接口名称相同,并且必须在同一个包中
-->
<select id="listAll" resultType="com.ht.vo.EmpVo">
<!--格式化sql语句的标签 -->
<![CDATA[
select * from Emp
]]>
</select>
</mapper> 

  此文件在 mybatis.xml中配置如下: 

 <mappers>
  <mapper resource="com/ht/mapper/EmpDAO.xml"/>
</mappers>

5. 后台实现接口类

package com.ht.action;

import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import com.ht.base.DataSourceFactory;
import com.ht.mapper.EmpDAO;
import com.ht.vo.EmpVo;

public class MybatisJava {

  public static void main(String[] args) {
    //调用自定义的DataSource工厂获取数据源
    DataSource dataSource = DataSourceFactory.getDataSource();
    // 新建MyBatis提供的JDBC事务工厂
    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    // 创建MyBatis的Environment环境对象(模式:开发者模式,事务,数据源)
    Environment environment = new Environment("development", transactionFactory, dataSource);
    // 由环境对象构建出MyBatis的Configuration配置对象
    Configuration configuration = new Configuration(environment);
    // 把映射器接口添加到配置对象中,让MyBatis可以正常找到映射接口
    configuration.addMapper(EmpDAO.class);
    // 由SqlSessionFactoryBuilder和configuration配置对象获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    // 由sqlSessionFactory打开连接获取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 由SqlSession获取映射器接口EmpDAO
    EmpDAO empDAO = sqlSession.getMapper(EmpDAO.class);
    // 映射器接口调用方法,执行指定的SQL语句EmpVo
    List<EmpVo> empList = empDAO.listAll();
    //遍历集合
     if (empList != null && empList.size() > 0) {
       for (EmpVo emp : empList) {
        System.out.println(emp);
       }
     }
  }

}

两种方法获取数据源:

1.自定义的DataSource工厂获取数据源

package com.ht.base;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import javax.sql.DataSource; public class DataSourceFactory {
//创建数据库连接池
public static DataSource getDataSource() {
//数据库驱动
String driver = "com.mysql.jdbc.Driver";
//uri地址
String url = "jdbc:mysql://localhost:3306/mybatis";
//数据库用户名
String username = "";
//数据库密码
String password = "1234";
return new PooledDataSource(driver, url, username, password);
} }

  2.读取mybatis.xml获取数据源

package com.ht.base;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException;
import java.io.InputStream; /**
* SqlSessionFactory工具类
* @author Steven
*
*/
public class SqlSessionFactoryUtils { private static SqlSessionFactory sqlSessionFactory;
static { try {
// 创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
// 创建核心配置文件的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
// 通过输入流创建SqlSessionFactory对象
sqlSessionFactory = ssfb.build(inputStream);
// new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
} } /**
* 获取SqlSessionFactory
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}