mybatis极简教程

来源:互联网 发布:怎么下载旧版软件 编辑:程序博客网 时间:2024/05/16 09:52

    mybatis是一个非常简单易学的orm框架,现在使用它也有一段时间了,在这里用mybatis3.4.2为例记录一下它的简单用法,在这里仅仅使用mybatis并不整合spring。

首先创建一个数据库,命名为demo,然后在数据库中创建一张表命名为staff,如图 id设为主键并且自增


目录结构如下


要注意的是,不要忘记将resources文件夹加入buildpath路径,并且将依赖的mybatis和jdbc的jar包导入Libraries

然后根据本地的环境配置jdbc.properties,我这里是这样配置的

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/demo?userUnicode=true&characterEncoding=UTF8&useSSL=falseusername=rootpassword=123456

接下来配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//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);}


然后是与之对应的StaffMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//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 blocke.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);}}


最后来看一下编写完成后的目录结构




1 0