MyBatis-02-接口式开发(动态代理)
目录结构:
1.导入相关包
mybatis-3.3.1.jar
ojdbc14.jar
2.数据库连接信息文件
db.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username=SA
password=abc123
3.编写配置文件
mybatis-config.xml(名字什么都可以)
<?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="db.properties"></properties>
<!--配置连接信息 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 取出properties文件中的值,放入value -->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--声明mapper文件位置,以 / 分割-->
<mappers>
<mapper resource="com/dyz/mapper/FoodsMapper.xml"/>
</mappers>
</configuration>
4.编写实体类
package com.dyz.bean;
public class Foods {
private int fid;
private String fname;
private String ftype;
private double fprice;
private int fnum;
//自行添加set get toString方法
}
5.编写mapper文件
FoodsMapper.xml
<?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">
<!--namespace对应相关的Dao地址-->
<mapper namespace="com.dyz.dao.FoodsDao">
<select id="FoodsShow" resultType="com.dyz.bean.Foods">
SELECT * FROM Foods
</select>
</mapper>
6.编写Dao
//只需要写个接口,不需要实现
//注意:::方法名对应mapper.xml的id,返回值,参数也要一致
public interface FoodsDao {
public List<Foods> FoodsShow();
}
7.测试
public class MyClass {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
//核心
public static void main(String[] args) {
SqlSession sqlSession = getSqlSessionFactory().openSession();
try {
//根据反射
FoodsDao foodsDao = sqlSession.getMapper(FoodsDao.class);
//调用方法
List<Foods> foodsList = foodsDao.foodsShow();
foodsList.forEach((food)-> System.out.println(food));
} finally {
sqlSession.close();
}
}
}