在三层架构中我们虽然对dao层已经很用心的简化,可还是感觉很复杂,于是就有了MyBatis,简单来说,MyBatis可以简化JDBC操作。起初并不这样叫,谷歌从apache收购后从IBatis改成MyBatis。
老样子,学习新技术当然得下载jar,不然学个屁。链接:
http://www.mybatis.cn/82.html
因为这项技术重在dao层,所以学习是新建java项目即可。
好了,现在开始
说是简化,具体怎么简化JDBC的呢?其实就是在数据表
create table person(
id number primary key,
name varchar2(20),
age number);
insert into person values(1,'zs',15);
和实体类
private int id;
private String name;
private int age;
中建立映射关系(ORM),这样我们以后修改实体类就等同于修改表。
数据表和实体类都有了,缺什么?关系,对,映射关系
映射关系就是通过xml文件建立,命名同常为:“实体类名” + “Mapper.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">
<mapper namespace="org.mybatis.entity.personMapper">
<select id="queryPersonById" resultType="org.mybatis.entity.Person" parameterType="int">
select * from person where id = #{id}
</select>
</mapper>
jdbc中语句传参是通过‘where id =?’的形式,xml里是‘where id = #{id}’的形式
接下来配置mybatis,新建conf.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--配置数据库信息-->
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加载映射文件-->
<mapper resource="org/mybatis/entity/personMapper.xml"/>
</mappers>
</configuration>
这么多,很慌?不急,我们只看这里
将箭头指的地方改为自己数据库的信息即可,记得jdbc驱动构建进去
到这一步就差不多了。接下来我们测试
新建测试类:TestMyBatis.java
public class TestMyBatis {
public static void main(String[] args) throws IOException {
// 加载配置文件
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder().build(reader);
// session == conn
SqlSession session = sqlSessionFactoryBuilder.openSession();
String statement = "org.mybatis.entity.personMapper.queryPersonById";
Person person = session.selectOne(statement,1);//1是查询id为1的人
System.out.println(person);
session.close();
}
}
运行结果:
项目结构: