Mybatis的入门之路
mybatis的基础教程,内容主要来源于官网的document。介绍一些如何创建一个mybatis。
(ps.这里只给出mybatis下载链接,对应的sql驱动库请自行下载,这里我用的Mysql)
先上这个工程图:
再建mybatis的核心配置文件 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> <!-- 加载配置文件。这里踩过一个坑,他这个label的顺序有要求的: Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?) 起初properties和typeAliases的位置调转了然后就报错了。感觉不太人性化啊。╮(╯▽╰)╭ --> <properties resource="dbinfo.properties"> </properties> <!-- 就是Aliase,alias => type 内部转换 --> <typeAliases> <typeAlias type="com.denny.dao.course" alias="course" /> </typeAliases> <!-- 环境配置,加载驱动 --> <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="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 这里的mappers就是对应多个不同的SQL CURD语句吧,可以多条。。 --> <mappers> <mapper resource="jdbc1Mapper.xml" /> </mappers> </configuration>
建个数据库dbinfo.properties的一些信息,给mybatis-config.xml核心配置文件读取:
url = jdbc:mysql://localhost/jdbc1?autoReconnect=true&useSSL=false driver = com.mysql.jdbc.Driver username = mysql password = mysql
再来就是要创建一个mapper,对应的sql语句了jdbc1Mapper.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就是指的那个接口包,用接口给定语句描述查询是mybatis的新特性,后面有介绍,course指的是在核心配置中用Aliase替代了 --> <mapper namespace="com.denny.mapper.courseMapper"> <select id="selectCourse" resultType="course"> select * from course where C = #{id} </select> </mapper>
配置的内容搞定了,接下来就是写java 代码了。码数不多,仅仅几行就搞定了,比起jbdc那叫一个方便introduction.java:
package com.denny.intro;
import java.io.IOException;
import java.io.InputStream;
import javax.annotation.Resource;
import javax.annotation.Resources;
import javax.xml.transform.Source;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.denny.dao.course;
import com.denny.mapper.courseMapper;
public class introduction {
public introduction() {
// TODO Auto-generated constructor stub
}
//这里是采用读取xml的方式去构建SqlSessionFactory,直接从java程序中构建的话,感觉不太便利就不讲了。
public void loadMybatis(){
String srouce = "mybatis-config.xml"; //mybatis的核心配置文件的uri
SqlSessionFactory factory = null; //暂时理解成一个工厂,能生产出许多可执行的CURD
//加载工厂
try {
InputStream iStream = org.apache.ibatis.io.Resources.getResourceAsStream(srouce);
factory = new SqlSessionFactoryBuilder().build(iStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.getMessage().toString());
}
//SqlSession就是可以执行Sql语句的方法;官方点的介绍:
//SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
SqlSession session = factory.openSession();
course c = null;
try {
/*
*得到了session这样的对象后,要执行sql的任意操作都可以了。
*这里有两种方法,一种通过session.selectOne去操作,还有一种用接口方式操作,这里选用后者。
*理由在文档中有介绍:
*"使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),
* 你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换"
*/
courseMapper cm = session.getMapper(courseMapper.class);
c = cm.selectCourse(1); //给出要查询的ID
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage().toString());
}
System.out.println(c.getCName());
}
public static void main(String[] args) {
new introduction().loadMybatis();
System.out.println("Test");
}
}
接下来就是一些DAO和接口类了。就写个概要吧:
package com.denny.dao; public class course { int C; String CName; int T; //...........省略了这些属性的get和set方法 } package com.denny.mapper; import com.denny.dao.course; public interface courseMapper { course selectCourse(int id); }
数据库表(course)就是有3列C(int),Cname(String),T(int)。不细讲了;
如果成功的话应该就可以找出对应C等于1的列数了。
刚刚看完Mybatis的入门内容,就先整理整理。有不足的欢迎拍砖。撤~~