MyBatis是支持普通的Sql查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的pojos(Plain Ordinary Java Objects,普通的Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
一、导包
二、核心配置文件
建在src目录下
<1>.导入约束
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//resource.mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
<2>.配置详解
<configuration> <!-- 配置开发环境,可以配置多个,在具体用时再做切换 --> <environments default="development"> <environment id="development"> <!-- 事务管理类型:JDBC、MANAGED --> <transactionManager type="JDBC"></transactionManager> <!-- 数据源类型:POOLED、UNPOOLED、JNDI --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></pr operty> <property name="url" value="jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value=""></property> </dataSource> </environment> </environments> <!--告诉mybatis需要引入哪些Mapper映射文件--> <mappers> <mapper resource="cn/hd/pojo/UserMapper.xml"></mapper> </mappers> </configuration>
三、创建实体类
User
代码如下:
package cn.hd.pojo;
public class User {
private Integerid;
private Stringname;
private Stringsex;
private Stringaddress;
private Integerbalance;
public User(){
}
public User(Integerid, String name, String sex, String address, Integer balance) {
this.id = id;
this.name = name;
this.sex = sex;
this.address = address;
this.balance = balance;
}
public IntegergetId() {
returnid;
}
publicvoid setId(Integer id) {
this.id = id;
}
public StringgetName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public StringgetSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
public StringgetAddress() {
returnaddress;
}
publicvoid setAddress(String address) {
this.address = address;
}
public IntegergetBalance() {
returnbalance;
}
publicvoid setBalance(Integer balance) {
this.balance = balance;
}
@Override
publicString toString() {
return"User{" +
"id=" + id+
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
", balance=" + balance +
'}';
}
}
四、映射文件
<1>.导入约束
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPEmapper
PUBLIC"-//mybatis.org//DTDMapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper>
</mapper>
<2>.配置
<mapper namespace="test">
<select id="findUserById" parameterType="int"resultType="cn.hd.pojo.User" >
SELECT * FROM user WHEREid = #{id}
</select>
</mapper>
五、测试类
Demo:
public class Demo {
@Test
publicvoid fun() throws IOException{
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(in);
SqlSession session =sessionFactory.openSession();
User user = session.selectOne("test.findUserById", 1);
System.out.println(user);
session.close();
}
}
test.findUserById test:是映射文件中的namespace findUserById :是 当前sql语句 id