发表于: 2017-10-14 22:57:50

6 770


今天学习的内容:

用Mybatis实现对数据库的表的删除:

定义sql映射xml文件,

在userMapper.xml文件中添加如下内容:

单元测试类代码如下:

package me.gacl.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

import me.gacl.domain.User;

import me.gacl.util.MyBatisUtil;

public class TestCRUDByXmlMapper {

@Test

     public void testDelete(){

         SqlSession sqlSession = MyBatisUtil.getSqlSession(true);

         /**

          * 映射sql的标识字符串,

          * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,

          * deleteUser是delete标签的id属性值,通过delete标签的id属性值就可以找到要执行的SQL

          */

         String statement = "me.gacl.mapping.userMapper.deleteUser";//映射sql的标识字符串

         //执行删除操作

         int retResult = sqlSession.delete(statement,5);

         //使用SqlSession执行完SQL之后需要关闭SqlSession

         sqlSession.close();

         System.out.println(retResult);

     }

}

用到的MyBatisUtil工具类代码如下:

package me.gacl.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {

/**

 * 获取SqlSessionFactory

 * @return SqlSessionFactory

 */

public static SqlSessionFactory getSqlSessionFactory() {

    String resource = "conf.xml";

    InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);

    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

    return factory;

}

/**

 * 获取SqlSession

 * @return SqlSession

 */

public static SqlSession getSqlSession() {

    return getSqlSessionFactory().openSession();

}

/**

 * 获取SqlSession

 * @param isAutoCommit 

 *         true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务

 *         false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务

 * @return SqlSession

 */

public static SqlSession getSqlSession(boolean isAutoCommit) {

    return getSqlSessionFactory().openSession(isAutoCommit);

}

}

删除执行之前的表格:

删除代码执行之后的结果:

百度了一下关于Mybatis的介绍:

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 

Mybaits的执行流程:

原理详解:

 MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

问题:在学习Mybatis对数据库的操作的时候,发现有些地方不是很懂,SqlSession不太明白。

明天继续学习关于Mybatis的内容。




返回列表 返回列表
评论

    分享到