mybatis是一个非常简单易学的orm框架,现在使用它也有一段时间了,在这里用mybatis3.4.2为例记录一下它的简单用法,在这里仅仅使用mybatis并不整合spring。
首先创建一个数据库,命名为demo,然后在数据库中创建一张表命名为staff,如图 id设为主键并且自增
目录结构如下
要注意的是,不要忘记将resources文件夹加入buildpath路径,并且将依赖的mybatis和jdbc的jar包导入Libraries
然后根据本地的环境配置jdbc.properties,我这里是这样配置的
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/demo?userUnicode=true&characterEncoding=UTF8&useSSL=false
username=root
password=123456
接下来配置mybatis-config.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>
<properties resource="jdbc.properties"/>
<typeAliases>
<typeAlias type="staff.domain.Staff" alias="Staff"/>
</typeAliases>
<environments default="developer">
<environment id="developer">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="StaffMapper.xml"/>
</mappers>
</configuration>
创建Staff类
package staff.domain;
public class Staff {
private int id;
private String name;
private int salary;
public Staff() {
}
public Staff(String name, int salary) {
super();
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String toString() {
return "id: " + id + "name: " + name + "salary: " + salary;
}
}
package staff.mapper;
import staff.domain.Staff;
public interface StaffMapper {
public int createStaff(Staff staff);
public Staff queryStaff(int id);
}
<?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="staff.mapper.StaffMapper">
<resultMap id="StaffResultMapper" type="Staff">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="salary" column="salary"/>
</resultMap>
<select id="queryStaff" parameterType="int" resultMap="StaffResultMapper">
select id,name,salary from staff where id = #{id};
</select>
<insert id="createStaff" parameterType="Staff" useGeneratedKeys="true" keyProperty="id">
insert into staff(name,salary) values(#{name},#{salary});
</insert>
</mapper>
编写DataBaseUtil工具类
package staff.util;
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;
public class DataBaseUtil {
private static SqlSessionFactory sqlsessionfactory;
private static InputStream is;
static {
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sqlsessionfactory = new SqlSessionFactoryBuilder().build(is);
}
public static SqlSession getSession(boolean flag) {
return sqlsessionfactory.openSession(flag);
}
}
进行测试
package staff.test;
import org.apache.ibatis.session.SqlSession;
import staff.domain.Staff;
import staff.mapper.StaffMapper;
import staff.util.DataBaseUtil;
public class Test {
public static void main(String[] args) {
Staff staff = new Staff("张三", 10000);
SqlSession sqlsession = DataBaseUtil.getSession(true);
StaffMapper sm = sqlsession.getMapper(StaffMapper.class);
sm.createStaff(staff);
}
}
结果如图
查询测试
package staff.test;
import org.apache.ibatis.session.SqlSession;
import staff.domain.Staff;
import staff.mapper.StaffMapper;
import staff.util.DataBaseUtil;
public class Test {
public static void main(String[] args) {
SqlSession sqlsession = DataBaseUtil.getSession(true);
StaffMapper sm = sqlsession.getMapper(StaffMapper.class);
Staff s = sm.queryStaff(1);
System.out.println(s);
}
}
最后来看一下编写完成后的目录结构