MyBatis的最简单环境的搭建,使用xml配置,用来理解后面的复杂配置做基础
1.环境目录树(导入mybatis-3.4.1.jar包即可,这里是为后面的环境最准备使用了web项目,如果只是做
mybatis的环境,普通java项目即可 )
2.Person.java(纯POJO对象类)
package com.orange.model; public class Person { private String name; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
3.相应的Mapper映射文件PersonMapper.xml(最好在后面加上Mapper组成model_nameMapper.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"> <!-- 命名空间为com.orange.model.PersonMapper --> <mapper namespace="com.orange.model.PersonMapper"> <!-- 返回的结果为com.orange.model.Person --> <select id="selectPerson" resultType="com.orange.model.Person"> select * from person </select> </mapper>
这里使用了最简单的方式配置其中select * from person的返回结果mybatis会根据POJO对象中的set方法注入,数据库中数据的字段也必须是一致的否则无法注入
当然,mybatis提供了方法解决字段和属性不一致的问题
4.mybatis的主配置文件mybatis.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> <!-- 环境配置,可以配置多个环境,但是只会使用一个,defaut的值是哪个环境的id的值,即使用哪个环境 --> <environments default="default"> <environment id="default"> <!-- 使用JDBC事务管理器 --> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED" > <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://172.16.100.10:3306/mybatis?characterEncoding=utf-8"/> <property name="username" value="mysql"/> <property name="password" value="mysql"/> </dataSource> </environment> </environments> <!-- 引入映射文件 --> <mappers> <mapper resource="com/orange/model/PersonMapper.xml"/> </mappers> </configuration>
5.数据库表的配置
6.测试类Test1.java
package mybatistest; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.orange.model.Person; public class Test1 { public static void main(String[] args){ try { // 读取配置文件到InputStream InputStream is = Resources.getResourceAsStream("mybatis.xml"); // 创建SqlSessionFactory工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); // 开启SqlSession SqlSession session = factory.openSession(); // 使用session查询,这里的第一个参数就是定义的Mapper映射的命名空间和对应的语句组成,如果需要参数,可以加入参数 Person person = (Person)session.selectOne("com.orange.model.PersonMapper.selectPerson"); System.out.println("name: " + person.getName()); System.out.println("address: " + person.getAddress()); } catch (IOException e) { e.printStackTrace(); } } }
7.测试结果