Mybatis入门案例
1.首先搭建maven项目
环境jdk1.7,eclipse4.5.1, mysql
2.pom.xml内容如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.neutron</groupId>
<artifactId>flowers</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>flowers</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- mybatis jar -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
</build>
</project>
3.创建连接数据库配置文件db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
name=root
password=root
4.创建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>
<!-- 作为属性值引入到conf.xml中 -->
<properties resource="db.properties" />
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/neutron/flowers/mapper/userMapper.xml" />
</mappers>
</configuration>
其中使用properties属性将db.properties配置文件引入到conf.xml中
5.创建数据库表,并且插入两条数据
create database mybatis;
use mybatis;
create table users(id int primary key auto_increment, name varchar(20), age int);
insert into users(name, age) values('tom', 12);
insert into users(name, age) values('jack', 11);
6.创建与数据库表对应的实体类.
注意此时数据库表中的字段和实体类的属性是一一对应的,并且大小写一样。
package com.neutron.flowers.entity;
public class User
{
private int id;
private String name;
private int age;
public User()
{
super();
}
public User(int id, String name, int age)
{
super();
this.id = id;
this.name = name;
this.age = age;
}
// get set
@Override
public String toString()
{
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
7.创建映射文件,文件位置信息请参考代码和前面的项目结构userMapper.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相当于Id,需要唯一,此处设置为实体类包名+mapper文件名 -->
<mapper namespace="com.neutron.flowers.mapper.userMapper">
<select id="query" parameterType="int" resultType="com.neutron.flowers.entity.User">
select id,name,age from users where id = #{id}
</select>
</mapper>
其中select表示查询,parameterType表示传入参数类型,resultType表示返回值类型。
再次提示,此处需要表字段和类属性名称必须相同,并且一一对应,如果不同需要进行别名设置而已。此处配置文件是将java实体类和数据库表进行关联。
8.测试类
package com.neutron.flowers;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.neutron.flowers.entity.User;
import junit.framework.TestCase;
public class UserTest extends TestCase {
@Test
public void testSelect() {
String resource = "conf.xml";
// 类加载器加载配置文件拿到配置文件流
InputStream is = UserTest.class.getClassLoader().getResourceAsStream(resource);
// 1.创建SqlSessionFactory实例
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 2.创建SqlSession实例
SqlSession session = factory.openSession();
// statement = namespace + . + id
String statement = "com.neutron.flowers.mapper.userMapper"+ "." + "query";
// 3.查询
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
其中,mybatis和hibernate的操作十分类似
1.根据配置文件创建工厂
2.根据工厂创建session
3.根据session和sql进行操作