mybatis框架初步使用过程
首先Mybaits是一个在GitHub上的开源项目,下载文件Jar包可以直接从GitHub上进行下载
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
1.首先创建数据库和实体类
这里将一个Student类举例
1 package org.lizi.entity; 2 /** 3 * @author: Jeson 4 * @date:2017年8月14日 上午11:06:21 5 * @version : 6 * 7 */ 8 public class Student { 9 10 public String name; 11 public int age; 12 public Student() { 13 super(); 14 } 15 public Student(String name, int age) { 16 super(); 17 this.name = name; 18 this.age = age; 19 } 20 public String getName() { 21 return name; 22 } 23 public void setName(String name) { 24 this.name = name; 25 } 26 public int getAge() { 27 return age; 28 } 29 public void setAge(int age) { 30 this.age = age; 31 } 32 @Override 33 public String toString() { 34 return "Student [name=" + name + ", age=" + age + "]"; 35 } 36 37 38 }
然后创建UserDao接口和接口的实现类
1 package org.lizi.dao; 2 3 import java.io.IOException; 4 5 import org.lizi.entity.Student; 6 7 /** 8 * @author: Jeson 9 * @date:2017年8月14日 下午2:13:57 10 * @version : 11 * 12 */ 13 public interface UserDao { 14 public void insertU(Student s) throws IOException; 15 }
package org.lizi.daoimpl; 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; import org.lizi.dao.UserDao; import org.lizi.entity.Student; import Utils.Utils; /** * @author: Jeson * @date:2017年8月14日 下午2:19:12 * @version : * */ public class UserDaoImpl implements UserDao { @Override public void insertU(Student s) throws IOException { // TODO Auto-generated method stub /* //1.加载驱动类 InputStream res = Resources.getResourceAsStream("mybatis.xml"); //2.创建sqlSessionFactory对象 SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(res); //3.通过sqlSessionFactory对象来创建一个Session SqlSession ss = ssf.openSession(); //4.执行SQL ss.insert("insertU",s); ss.commit(); //5.关闭Se's'si'o'n对象 ss.close(); */ SqlSession ss = Utils.getSession(); //4.执行SQL ss.insert("insertU",s); ss.commit(); Utils.closeSession(); } public static void main(String[] args) throws IOException { UserDao ud = new UserDaoImpl(); Student s = new Student("bbb",18); ud.insertU(s); } }
准备工作做好之后,就可以进行XML文件的配置
首先在官方文档中找出 配置文件代码复制过来改成自己的
放在src目录下就行,
这个是mybaits.xml文件
1 <?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"> 2 <configuration> 3 <!-- 加载数据库连接属性文件 --> 4 <!-- <properties resource="database.propertise"></properties>--> 5 <environments default="development"> 6 <environment id="development"> 7 <transactionManager type="JDBC" /> 8 <dataSource type="POOLED"> 9 <property name="driver" value="com.mysql.jdbc.Driver" /> 10 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?encoding=UTF-8" /> 11 <property name="username" value="root" /> 12 <property name="password" value="123456" /> 13 </dataSource> 14 </environment> 15 </environments> 16 <mappers> 17 <!-- 在配置文件中注册映射文件 --> 18 <mapper resource="org/lizi/entity/student.xml" /> 19 </mappers> 20 </configuration>
dao接口的映射文件
Student.xml
namespace是Dao接口的文件路径
parameterType是查询对应的实体类
insert的ID是SQL语句的唯一标识
下面是SQL语句的方法
1 <?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"> 2 <mapper namespace="org.lizi.dao.UserDao"> 3 <insert id="insertU" parameterType="Open Declaration org.lizi.entity.Student"> 4 insert into student(name,age) values(#{name},#{age}); 5 </insert> 6 7 </mapper>
如果有多个接口的话,每一个接口就对应着一个映射文件,每回创建新的映射文件之后不要忘记在mybatis.xml文件中进行注册
当两个配置文件中的ID非要向同时,而且指向同一个命名空间 ,可以修改其中一个文件的命名空间,
调用的话就是 session.insert( "命名空间.id",对象参数);
一定要规范命名,上面这种方法只是为了理解namespace的作用,并不推荐使用
主配置文件详解
1.大家习惯性将Mybatis的配置文件命名成mybaties.xml
2.这是存放数据库链接的配置文件
<properties resource="database.propertise"></properties>
3.可以给实体类在主文件中起一个别名给Dao的xml文件调用,type就是实体类的全类名,alias就是别名
使用package的方法所起的别名就是简单类名,比如说org.lizi.entity.Student的简单类名就是Student
1 <typeAliases> 2 <!-- 配置别名方式1 --> 3 <typeAlias type="org.lizi.entity.Student" alias="stu"/> 4 <!-- 配置别名方式2 --> 5 <package name="org.lizi.entity.Student"/> 6 </typeAliases>
4.Mybatis还给常用的数据类型指定了别名
常用包装类型
配置Mybatis的运行环境
<environments>环境标签,主要是用来配置数据源,和事物管理
<environments>标签下可以包括多个运行环境<environment>,可以配置多个数据库,是用default制定当前使用哪一个运行环境
<transactionManager type="JDBC" />使用JDBC的事物管理器