mybatis:可以简化jdbc操作,实现数据的持久化
ORM概念:对象和表的映射
mybatis是ORM的实现,操作对象就相当于操作表(数据库)
配置mybatis:
1、下载:主要用到的就是该文件F:\mybatis-3.5.0\mybatis-3.5.0\mybatis-3.5.0.jar,将其导入并添加路径
2、还需要一个连接mysql的驱动
3、为了将类与数据库映射起来,所以需要一个pojo类,属性和类型尽量与数据库一致
4、在类下面新建mapper.xml,导入配置文件,修改namespace
<?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="com.sicnu.sty.personMappers"> //映射文件的路径
<select id="queryPersonByID" resultType="com.sicnu.sty.Person" parameterType="int"><!-- resultType必须写全类名即包下面的类名 parameterType为参数类型-->
select * from person where id = #{id} <!-不要加分号-->
</select>
</mapper>
5、src下新建配置文件conf.xml 导航:手册中:Building SqlSessionFactory from 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="com.mysql.jdbc.Driver" /><!-- 连接数据库的驱动 结构就这样,其他数据库结构不一样-->
<property name="url" value="jdbc:mysql://localhost:3306/php10" /><!-- 连接数据库pap10 -->
<property name="username" value="root" /><!-- 用户名 -->
<property name="password" value="123456" /><!-- 密码 -->
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载映射文件 -->
<mapper resource="com/sicnu/sty/personMappers.xml" />
</mappers>
</configuration>
6、新建一个测试类来获取数据库中的数据
package com.sicnu.sty;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class TestMybatis {
public static void main(String[] args) throws IOException {
//加载mybatis配置文件(为了访问数据库)
//把配置文件变为一个流的形式
Reader reader = Resources.getResourceAsReader("conf.xml");
//SqlSessionFactory为接口不能直接用--->用SqlSessionFactoryBuilder实例化-->用其build方法-->目的连接数据库
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sessionFactory.openSession();
//根据以下两个找到最数据库的操作,用点.连接起来namespace+id
//namespace:com.sicnu.sty.personMappers
//id:queryPersonByID
String statement = "com.sicnu.sty.personMappers.queryPersonByID";
Person person =sqlSession.selectOne(statement,1);//在personMappers.xml中说明了发挥对象是Person
System.out.println(person);
sqlSession.close();//关闭连接
}
}
7、运行得出结果
附上Demo结构
之后是官方推荐,即另一种动态代理的方式