mybaits入门2--mybatis工作流程+实践练习

来源:互联网 发布:java 中间件 面试题 编辑:程序博客网 时间:2024/06/04 17:43

上节回顾:上节介绍了mybatis历史,特点以及环境的搭建,本节主要介绍下mybatis的工作流程以及使用它进行一个简单的练习


一、mybatis的工作流程


在整个过程中,比较关键的是两个配置文件两个对象,下面我尽量用白话文把过程梳理一遍:

1.SqlSessionFactory对象

这个对象作用是与数据库之间建立会话,这样我们就需要连接数据库的信息,信息从哪里来,从基本配置文件中来。怎么把SqlSessionFactory和基本配置文件联系起来,代码实现如下:

String resource = "book/map/mybatisconfig.xml"; //基本配置文件的路径Reader reader = null;//建立输入流try {reader = Resources.getResourceAsReader(resource);//mybatis自带的API方法} catch (IOException e) {e.printStackTrace();}SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);//通过读取流从而读取基本配置文件

把基本配置文件的路径放到流里面,再让SqlSessionFactory去读取这个流对象就可以建立联系了。

2.基本配置文件:mybatisconfig.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>         <!-- 连接数据库信息 -->    <environments default="development">         <environment id="development">             <transactionManager type="JDBC"/>             <dataSource type="POOLED">                 <property name="driver" value="com.mysql.jdbc.Driver"/>                 <property name="url" value="jdbc:mysql://localhost:3306/book"/>                 <property name="username" value="root"/>                 <property name="password" value="123654"/>             </dataSource>         </environment>     </environments>     <!-- 引用map配置文件 -->    <mappers>    <mapper resource="book/map/User.xml"/>    </mappers></configuration> 
步骤1中的SqlSessionFactory对象通过流读取这个配置文件里面连接数据库的信息从而建立与数据库的联系。

在上面配置文件中还有一个部分是引用map配置文件,也就是映射配置文件,这几行代码是把基本配置文件和映射配置文件联系起来的。当读取基本配置文件时,也就知道了映射配置的位置了,从而可以知道里面的sql语句。

3.映射配置文件:User.xml

这个配置文件里写的全是sql语句,但有其一定的格式,贴上代码先:

<?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="book.pojo.User">      <select id="findById" parameterType="int" resultType="book.pojo.User">    select * from book where id=#{id}    </select> </mapper>  
格式很简单,跟html标签很像,查询语句中在<select>标签中写sql语句,

<select>标签中的属性:id是唯一标识符:后面session对象要用哪条sql语句,就是通过这个id获取对应的sql语句

  parameterType:传入参数,这里传入参数是个id,也就是int类型

  resultTtype:这是一条通过主键id查询对象的sql语句,查询结果返回一个对象,resultType就用于接收这个对象。

4.SqlSession对象:

SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);//通过读取流从而读取基本配置文件SqlSession session = sqlMapper.openSession();//通过SqlSessionFactory对象创建SqlSession对象User user = session.selectOne("findById", 1);//sesion执行sql语句System.out.println(user);session.close();//记得最后要关闭session对象
步骤1已经建立了SqlSessionFactory对象,调用它的openSession方法可创建SqlSession对象。

SqlSession对象调用mybaits自带的一系列API方法来执行sql语句。这里的session.selectOne("findById",1)意思就是获取映射配置文件中id是findById的那条sql语句,1是传入的id值。


二、简单的小练习

学以致用,只有在实践中才能发现不足,我在第一次运行的时候就报了两个错误,后来在网上弄清楚并记录在了博客里。

步骤:

1.在数据库中建里一张表(前提你已经安装了自己的一个数据库,比如mysql数据库),并添加字段:id,username,password


2.手动往表中添加一条数据,看到了吗,伙计,我添加的用户名是  hello world!


3.回到程序中,建里一个实体类User

这个很简单,添加三个属性,保持与数据库中的字段名一致,并加上对应的get和set方法,伙计,这个肯定难不倒你。

为了测试方便,你还可以加上toString()方法

4.分别粘贴一个基本配置文件和映射配置文件放到程序中,这里放上我的目录,以防有的朋友已经头昏眼花了~




对的,如果你从网上找不到这两个配置文件,那么告诉你个好消息,自己分别创建个xml文件(这个总该会的吧),之后把这篇文章顶部的两个xml文件的内容对号入座的粘贴复制一下就搞定了

好的,搞定一切,就可以写个测试类进行测试了。瞧,我目录里的test1就是我的测试类:

public class test1 {public static void main(String[] args) {String resource = "book/map/mybatisconfig.xml"; //基本配置文件的路径Reader reader = null;//建立输入流try {reader = Resources.getResourceAsReader(resource);//mybatis自带的API方法} catch (IOException e) {e.printStackTrace();}SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);//通过读取流从而读取基本配置文件SqlSession session = sqlMapper.openSession();//通过SqlSessionFactory对象创建SqlSession对象User user = session.selectOne("findById", 1);//sesion执行sql语句System.out.println(user);session.close();//记得最后要关闭session对象}}
如果你看了上一节的环境搭建,在这里缺什么包的话,直接引入即可。


最后,点击运行。出现下面代码就可以恭喜你完成了这个小作业了!


[framework] 2016-03-01 21:10:48,328 - book.pojo.User.findById -0    [main] DEBUG book.pojo.User.findById  - ==>  Preparing: select * from book where id=? 
[framework] 2016-03-01 21:10:48,415 - book.pojo.User.findById -87   [main] DEBUG book.pojo.User.findById  - ==> Parameters: 1(Integer)
[framework] 2016-03-01 21:10:48,443 - book.pojo.User.findById -115  [main] DEBUG book.pojo.User.findById  - <==      Total: 1
User [id=1, username=hello world!, password=123456]


上一节:MyBatis入门1--初识Mybatis

下一节:mybatis入门3--mybatis增删改查基础操作


1 0
原创粉丝点击