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; } }