Mapper XML的开发方式:有更好的维护性,我们不用修改java代码,可以让我们在XML中对SQL进行灵活的修改。这种开发方式更适合大型的,需要团队合作的项目。
注解开发方式:更好的程序编码体验。这种方式适合小型,敏捷开发的工程。
本篇内容仅供了解,因为,现在mybatis很少使用注解的方式开发;
在Mybatis中注解的主要作用是,替代原有xml的各种标签,在程序中利用对应的注解来进行开发,进而简化程序的配置过程,简化程序开发;
注解可以理解为,把【原先放在xml中的配置信息和SQL语句】放在java程序中书写。注解开发的优点:可以有更好的开发体验,可以让程序开发的更快。
目录
一:预备工作:创建一使用Maven管理依赖的mybatis项目
四:结果映射(使用***DTO类【数据传输对象类】去承接存储查询结果)
一:预备工作:创建一使用Maven管理依赖的mybatis项目
这个mybatis项目很简单,仅仅用于演示Mybatis注解的使用方式。
GoodsDTO类:
Goods类:
MyBatisUtils类:
package com.imooc.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
/**
* MyBatis工具类
* (1)创建全局唯一的SqlSessionFactory对象;(2)获取SqlSession的方法;(3)关闭SqlSession的方法;
*/
public class MyBatisUtils {
//sqlSessionFactory对象设置成静态的,这个对象属于类的;
private static SqlSessionFactory sqlSessionFactory = null;
static{
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
// 如果出现了异常,除了上面打印异常,还需要将这个异常向上抛,让使用这个类的程序也知道这儿报错了;
// 这儿主动抛了ExceptionInInitializerError,即在类的初始化过程中产生了错误;即调用者捕获了这个异常,就能够明白,
// mybatis在初始化的时候产生了错误,
throw new ExceptionInInitializerError(e);
}
}
/**
* 获得SqlSession对象的方法;;;;
* 在其他地方调用这个方法获得SqlSession对象后,后续就可以利用SqlSession完成数据表的增删改查了;
* 说明:工具类中的方法,一般使用static进行描述,这样以后通过类名就能直接调用了;
* @return
*/
public static SqlSession openSession(){
return sqlSessionFactory.openSession();
}
/**
* 关闭SqlSession的方法;
* @param sqlSession
*/
public static void closeSession(SqlSession sqlSession){
if (sqlSession != null){
sqlSession.close();
}
}
}
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="consolehaha" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%thread] %d{HH:mm:ss:SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="consolehaha"></appender-ref>
</root>
</configuration>
mybatis-config.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>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&characterEncoding=UTF-8"