前言:写本文前,博主已经是通过黑马程序员的视频大致地学过了一遍mybatis了,但无奈当时进度太快,没来得及好好总结,以致脑海中里只留下稀薄的印象。因此,为了更好地总结,博主跟着mybatis的官方文档回顾了一下mybatis,并以此博文记录。
概念:博主看了官方文档的入门部分后特意作了一幅概念图,能大概反映出mybatis的使用流程
文档上有详细说明,附上官方文档链接:www.mybatis.org/mybatis-3/zh/getting-started.html
以下是基于maven+IDEA+mysql的mybatis入门开发:
1、创建maven项目
由于本程序只是一个简单入门,因此是否使用骨架无伤大雅(本文没有使用)。
附上项目结构图:
2、pom文件
因为本文重点是mybatis的使用,因此博主尽量少地用到其他jar包。
xml version="1.0" encoding="UTF-8"?>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"> 4.0.0 Kanject MyMybatis 1.0-SNAPSHOT org.mybatis mybatis 3.3.0 mysql mysql-connector-java 5.1.29 junit junit 4.12
本程序用到的jar包有3个:mybatis核心包、mysql核心驱动包、junit单元测试包。
接下来正式开始mybatis的开发~
3、Person、PersonMapper、Person.xml
首先准备Person.java、PersonMapper.java、Person.xml三个文件。
Person.java
package pojo; public class Person { private int id; private String userName ; private int age ; private String mobilePhone ; public Person(){} public Person(int id, String userName, int age, String mobilePhone) { this.id = id; this.userName = userName; this.age = age; this.mobilePhone = mobilePhone; } public String getUserName() { return userName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getMobilePhone() { return mobilePhone; } public void setMobilePhone(String mobilePhone) { this.mobilePhone = mobilePhone; } @Override public String toString() { return "Person{" + "userName='" + userName + '\'' + ", age=" + age + ", mobilePhone='" + mobilePhone + '\'' + '}'; } }
PersonMapper.java
package mapper; import pojo.Person; public interface PersonMapper { void insertPerson(Person person); Person queryById(int id); void updatePerson(int id); }
Person.xml
xml version="1.0" encoding="UTF-8" ?> mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">namespace="mapper.PersonMapper"> id="insertPerson" parameterType="pojo.Person" > INSERT INTO PERSON(ID,USERNAME,AGE,MOBILEPHONE)VALUES (#{id},#{userName},#{age},#{mobilePhone}) id="updatePerson"> UPDATE PERSON SET USERNAME=#{userName},AGE=#{age},MOBILEPHONE=#{mobilePhone} WHERE ID=#{id}
然后解释下三者的区别:
Person.java:对实体的描述,包含了若干个实体的属性值。
PersonMapper.java:实体在数据库有哪些行为(博主简称为“实体行为”)的接口,对实体行为的大概描述。
Person.xml:实体行为在数据库操作上的具体实现,包含了 SQL 代码和映射定义信息。
三者的关联:
Person.xml通过
namespace="mapper.PersonMapper">
绑定了PersonMapper.java
Person.java是在程序中调用mapper方法后封装返回的结果。
4、mybatis-config.xml
根据概念图,mybatis-config.xml是mybatis的全局配置文件,为SqlSessionFactoryBuilder创建SqlSessionFactory服务。而 SqlSessionFactoryBuilder 除了可以从 XML 配置文件也可以从一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例(本文采取XML配置文件的方式)。
xml version="1.0" encoding="UTF-8" ?> configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">default="development"> id="development"> type="JDBC"/> type="POOLED"> name="driver" value="com.mysql.jdbc.Driver"/> name="url" value="jdbc:mysql://localhost:3306/mybatis"/> name="username" value="root"/> name="password" value="123"/> resource="mapper/Person.xml"/>
上面包含了2大块内容:数据库连接配置、Person类的mapper映射器
5、测试代码
完成上述步骤后,已完成mybatis大体的配置,现在进行代码测试。
import mapper.PersonMapper; 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 pojo.Person; import java.io.IOException; import java.io.InputStream; public class Test { @org.junit.Test public void testInsertPerson() throws IOException { //获取mybatis全局配置文件 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //利用sqlSessionFactory打开与数据库的会话 SqlSession sqlSession = sqlSessionFactory.openSession(); try { PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);//通过sqlSession得到mapper Person person = new Person(); person.setAge(3); person.setMobilePhone("33333333"); person.setUserName("333"); personMapper.insertPerson(person);//调用mapper的方法 sqlSession.commit();//若是增、删、改操作,不添加此语句则数据库不更改 } finally { sqlSession.close(); } } @org.junit.Test public void testQueryById() throws IOException { //获取mybatis全局配置文件 String resouces = "mybatis-config.xml"; InputStream in = Resources.getResourceAsStream(resouces); //读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); //利用sqlSessionFactory打开与数据库的会话 SqlSession sqlSession = sqlSessionFactory.openSession(); try { PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);//通过sqlSession得到mapper Person person = personMapper.queryById(10000);//调用mapper的方法 //只读操作不需要sqlSession.commit() System.out.println(person); } finally { sqlSession.close(); } } }
进行测试,程序正确运行:
小结:本文只是一个很基础的mybatis入门程序,里面的配置博主是能少则少地添加。本文展示的也是概念图中的其中一种实现方式,有兴趣的同学参照文档用其他方式实现。希望同学能能够通过这篇文章对mybatis有个大致的了解,有兴趣可以自行学习。
后记:本文是博主的第一篇博文,有许多不足,希望大家能多多支持和鼓励。文章若有错漏也欢迎大家指正。