mybatis基本配置

Mybatis 是一款非常方便的持久层框架,它对JDBC进行了封装,从而让我们在使用它时,可以避免几乎所有的JDBC代码。SQL语句配置在XML文件中,从而让配置变得更加灵活,它的CRUD在配置文件中分别用四个元素来表示。即inert,delete,update,select。另外,它是通过核心的SqlSession对象来获取配置文件中的信息,其实整个框架都是以该对象为基础的,下面简要说明一下,它的配置流程。
和JDBC一样,第一步就是要获取数据库连接,但在mybatis中,数据库连接都是在配置文件中配置的,如:
一、从配置文件获取一个数据库连接

<?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">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/userinfo"/>
        <property name="username" value="root"/>
        <property name="password" value="130588"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="config/UserInfoMapper.xml"/>
  </mappers>
</configuration>

在上述代码中,dataSource元素就是配置一个数据库的驱动,url,用户名和密码同时引入一个SQL映射文件(稍后说明该文件),文件配置完成后,我们就要通过SqlSession对象来获取这个文件的信息。

package com.ev.util;

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;

public class DatabaseConnection {

    public SqlSession getSqlSession(){
        String resource = "config/mybatis-config.xml";
        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            return sqlSessionFactory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public void closeSqlSession(SqlSession sqlSession){
        sqlSession.close();
    }
}

这个配置我放在config的包下,的上述代码中,首先是通过Resources.getResourceAsStream()函数,获取关于数据库连接配置文件的一个输入流,然后通过这个输入流得到SqlSessionFactory对象,最后再通过SqlSessionFactory对象的openSession()方法得到SqlSession实例,从而得到数据库连接,当然SqlSession实例用完后,我们就要释放相关资源,即调用sqlSession.close();

二、书写SQL映射语句

在mybatis中,SQL语句可分别写在配置文件的select,delete,update,insert四个元素中。同时这四个元素还可以接收从外面传过来的值。

<?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="ev.com.userinfo">
    <select id="listall" resultType="com.ev.entities.User">
        select id,username,workplace from usertable
    </select>
    <insert id="add" parameterType="com.ev.entities.User">
        insert into usertable(username,workplace) values (#{username},#{workplace}) 
    </insert>
    <delete id="del" parameterType="int">
        delete from usertable where id=#{id}
    </delete>
    <update id="update" parameterType="com.ev.entities.User">
        update usertable set username=#{username},workplace=#{workplace} where id=#{id}
    </update>
</mapper>

这里元素的namespace属性是必需的,这个是用来规定它里面的映射语句所属的命名空间,目地是在有多个映射文件的情况下避免映射语句间的冲突,另外parameterType属性就是从外面传过来的值的类型,可以是基本类型也可以是引用类型。当传入的是基本类型的值时,{}中的变量名称可以根据实际需要来命名,不过一般是和传入的变量名称一样,当传入引用类型时如一个对象,那么{}中的变量名称就取传入对象的属性名,当传入一个集合如:List类型,则变量名称取list,Map类型则取key,然后取相应值时,则应key.prop(prop为Map中的键名)。
该配置同时还支持标签和标签做一些逻辑判断和循环输出,可以使用OGNL。在这个标签中,如果表达式exp的值为true,则执行标签体中的内容,否则不执行。标签也有几个属性,如
Collection是指向一个集合,可以是Map和List,当是Map时,index是键名,item为值,如果是List则index为元素的下标,而item为元素值。
最后我们可以通过SqlSession实例为这些元素设置入参。

如sqlSession.selectList(“listall”);获取id为listall的select元素;
sqlSession.insert(“add”,user);获取id为add的insert元素,同时传入一个User类型的对象;
sqlSession.delete(“del”, id);获取id为del的delete元素,同时传入一个id;
sqlSession.update(“update”,user);获取id为update的insert元素,同时传入一个User类型的对象;
其中insert()、delete()、update()调用后,我们都要调用sqlSession.commit();方法把事务提交。

猜你喜欢

转载自blog.csdn.net/yangkaige111/article/details/80957152
今日推荐