一、历史回顾
(一)、复习一下上节课的项目
1、jar:mybatis.jar、mysql.jar
2、conf.xml:从指导pdf的文档里面抄写并进行修改。这里有数据库配置信息和映射文件的配置。
(1)、这里的<environments>可以配置多个<environment>,通过default属性来确定选择哪个数据源,来进行数据源的切换。这里还可以通过下面测试类中的代码:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development");,来修改default。一般不这样做。
(2)、<transactionManager type="JDBC"/>:事务的类型。“JDBC”方式是通过手工的方式提交(commit)、回滚(rollback)、关闭(close)等事务操作。“MANAGED”方式是将事务交由其他组件(Spring、jBoss)去托管,默认会关闭连接(通过配置如下图所示)。
(3)、<dataSource type="POOLED">:这里的“POOLED”是使用数据源连接池。省略数据库打开连接操作,只需要从池中获取连接和归还连接即可。还有一个值是“UNPOOLED”,它是传统的JDBC方式,这种方式每次都是打开关闭数据库,这种方式不推荐。还有第三种值是“JNDI”,这种是从开发中间件(例:Tomcat)获取一个内置的数据库连接池。
注意:这里的dtd文件的校验需要联网。如果没有就需要下载到本地使用,否则就不进行提示工作。
3、建立数据库以及映射数据库的实体(表 --- 类)。
namespace:是该mapper文件的唯一标识符,可以通过namespace定位出该文件。可以通过namespace.id可以定位出唯一的SQL语句。
parameterType:输入参数的类型。
resultType:返回结果的类型。
注意:这里的dtd文件的校验需要联网。如果没有就需要下载到本地使用,否则就不进行提示工作。
4、建立xxxMapper.xml,头信息也可以从指导pdf的文档里面抄写。里面可以有增删改查的配置。可以通过这里的namespace.id来唯一确定一个SQL语句。
5、测试类:
(1)、通过conf.xml产生,先将这个文件读到内存。
(2)、通过(1)产生SqlSessionFactory。具体是:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
(3)、打开SqlSession。具体是:SqlSession sqlSession = sqlSessionFactory.openSession();
(4)、建立statment,寻找执行的SQL。具体是namespace.id。
(5)、执行。具体是:Person person = (Person)sqlSession.selectOne(statment, new Integer(1));
(6)、关闭SqlSession。具体是:sqlSession.close();
二、增删改查操作
(一)、增删改查操作
1、修改xxxMapper.xml信息,此处修改PersonMapper.xml配置:
mybatis约定:输入参数parameterType和输出参数resultType在形式上都只能有一个。
如果输入/输出参数:是简单类型(8个基本类型 + String)则可以使用任何占位符,例:#{xxx}。如果是对象类型,则必须是对象的属性。例:#{属性名} --- #{id}、#{name}、#{age}。
输出参数:如果返回值类型是一个对象(例:Person),则无论返回一个或是多个,在resultType都写成对象类型(例:com.test.entity.Person)。
2、写测试类:
注意:这里conf.xml针对数据库的事务方式是JDBC方式,所以针对增加、修改、删除都要进行事务的提交或者回滚操作。
例:
PersonMapper.xml配置:
测试类: