IDEA+Mybatis (一)配置(基础版)
- 一、安装插件
- 二、(以下为测试插件示范)生成mapper文件
- 三、导入jar包
- 四、生成JavaBean类
- 五、生成config.XML文件
- 六、创建 SqlSession 对象
- 七、配置mapper文件
- 八、把写好的映射文件注册到全局配置文件中
- 九、运行
- 十、接口的形式(建议使用)
- 十一、总结
在IDEA上使用插件Free Mybatis plugin。
一、安装插件
在Settings搜索 Free Mybatis plugin 安装
(Free Mybatis plugin 一款免费的mybatis插件)
二、(以下为测试插件示范)生成mapper文件
项目新建接口,在接口名上使用 ALT+ENTER 组合键,点击如下行生成mapper文件
在项目目录下新建mapper目录存放mapper文件,并选择
此时接口对应的mapper文件已创建完毕
三、导入jar包
直接导入
下载相关文件:GitHub:mybatis下载地址 选择下载jar包和源码,如下:
在项目中新建lib目录,导入日志包(方便查看信息)、数据库驱动包、mybatis包。
然后在lib目录上右键点击 Add as library 进行jar包自依赖
maven方式
新建maven项目 方法 在pom.xml 文件中的 dependencies (没有就写上)标签里引入依赖:
<dependencies>
<!--mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!--sqlserver 数据库 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<!--日志包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
然后点击右上角导入即可
四、生成JavaBean类
编写一个于数据库对象表一一对应的javabean类,其中各个属性名要与数据库列名相对应
五、生成config.XML文件
新建conf目录存放XML文件
新建mybatis-config.xml文件,如果找不到新建XML文件选项可参考 此篇文章 将如下官方mybatis-config代码写入:
<?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>
<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>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
解析:
driver:数据库驱动,如SQLServer数据库:com.microsoft.sqlserver.jdbc.SQLServerDriver
url:数据库链接地址,如:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=student
username:数据库用户名
password:数据库密码
mapper:指向对应的mapper文件(映射文件),稍后修改
六、创建 SqlSession 对象
创建SqlSessionFactory对象,返回一个SqlSession 对象(代表和数据库的一次对话)
SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心.同时SqlSessionFactory也是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在.在应用运行期间不要重复创建多次
SqlSession对象是非线程安全对象,所以不要定义为全局变量,否则在多线程环境中会出现资源冲突问题,应该使用时获取
public static void main(String[] args) throws IOException {
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
}
修改resource路径为自己项目对应的config.xml文件
从SqlSessionFactory 中获取一个SqlSession实例,能直接执行已映射的SQL语句
例如,执行selectOne():
SqlSession session=sqlSessionFactory.openSession();
session.selectOne("",args);
其中,第一个参数为已经写好的SQL的唯一标识(mapper文件中)
第二个参数为所查询的值;
七、配置mapper文件
mapper文件官方代码如下:
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
其中:
namespace:名称空间(指向对应的接口名)
id:唯一标识(指向对应的接口中的方法名)
resultType:返回值类型(即javabean类型)
#{id}:从传过来的参数中获取id的值
八、把写好的映射文件注册到全局配置文件中
在mybatis-config.cml文件中修改
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
将resource配置为映射文件mapper的路径+文件名
如:com/conf/StudentDAO.xml
九、运行
调试运行
String resource = "com/conf/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
StudentDAO stu= session.selectOne("selectStudent","a");
System.out.println(stu);
session.close();
得出结果
十、接口的形式(建议使用)
以上方法为旧版mybatis编写方法,现在建议使用面相接口编程的方法进行编写
首先构造接口:
其次生成接口对应的mapper文件(ALT+ENTER)
注: Free Mybatis plugin可以使我们很方便的通过代码左部的绿色箭头在接口和mapper文件中进行切换
获取接口的实现对象:
StudentDAO DAO=session.getMapper(StudentDAO.class);
mapper接口没有实现类,mybatis会自动帮接口生成代理对象,代理对象实现具体业务逻辑。
实现代码:
String resource = "com/conf/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
try {
StudentDAO DAO=session.getMapper(StudentDAO.class); //新的方法
Student stu = DAO.SelectStudent("admin");
System.out.println(stu);
} finally {
session.close();
}
十一、总结
两个重要的配置文件:
mybatis全局配置文件(上文的mybatis-config.xml)包含数据库连接池信息,事务管理器、系统运行环境信息等。(非必要,可使用java代码实现)
sql映射文件(mapper文件):保存每一个sql语句的映射信息,将sql从java代码里抽取出来。
一个SqlSession工具类
工具类:
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try{
//指向mybatis配置文件
String resource ="com/conf/mybatis-config.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}catch (IOException e){
e.printStackTrace();
}
}
/** 获取SqlSession的实例 */
public static SqlSession sqlSession(){
//参数设置为true自动提交事务 :sqlSessionFactory.openSession(true);
return sqlSessionFactory.openSession();
}
}
使用:
SqlSession sqlSession= MybatisUtils.sqlSession();
try {
StudentDAO DAO=sqlSession.getMapper(StudentDAO.class);
Student stu = DAO.SelectStudent("admin");
System.out.println(stu);
} finally {
sqlSession.close();
}