文章目錄
1 環境說明
Maven項目,
1.1 Mapper類的代碼如下:
public interface MapMapper {
@Insert("insert into map values(#{name},#{value})")
int insert(TbMap map);
@Select("select * from map")
List<TbMap> selects();
}
1.2 實體類
public class TbMap {
private String name;
private String value;
/* getter setter 省略 */
}
2 官網入門demo
import com.mapper.MapMapper;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
/**
* 以手動配置方式
*/
public class Main {
private final static String url = "jdbc:mysql://112.74.172.75:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC";
private final static String username="root";
private final static String password = "root";
public static void main(String[] args) {
// 數據源配置
DataSource dataSource = new DriverManagerDataSource(url,username,password);
// 事務管理
TransactionFactory factory = new JdbcTransactionFactory();
// 環境配置
Environment environment = new Environment("dev",factory,dataSource);
// 生成配置類
Configuration configuration = new Configuration(environment);
// 添加Mapper類
configuration.addMapper(MapMapper.class);
// 拿到sql會話工廠
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 從會話工廠拿到會話,然後執行mapper方法
try(SqlSession sqlSession = sqlSessionFactory.openSession()){
MapMapper mapMapper = sqlSession.getMapper(MapMapper.class);
mapMapper.selects().forEach(item->{
System.out.println(item.toString());
});
}
System.out.println("end");
}
}
3 與springBoot整合
3.1 application.properties 配置方式(簡潔)
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = root
3.2 純配置類方式
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.apache.ibatis.transaction.TransactionFactory;
import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
/**
* mybatis的配置類
*/
@Configuration
public class MybatisConfiguration {
final String url = "jdbc:mysql://112.74.172.75:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC";
final String username="root";
final String password = "root";
/**
* 配置數據源
* @return
*/
@Bean
public DataSource dataSource(){
return new DriverManagerDataSource(url,username,password);
}
/**
* 使用spring的事務管理
* @return
*/
@Bean TransactionFactory transactionFactory(){
return new SpringManagedTransactionFactory();
}
/**
* 配置Sql會話工廠
* @param dataSource
* @param transactionFactory
* @return
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource, TransactionFactory transactionFactory){
// 配置環境變量,dev是sql語句的命名空間,可以自定義
Environment environment = new Environment("dev",transactionFactory, dataSource);
// 配置類,對環境變量的一個封裝,在這裏可以手動添加mapper, configuration.addMapper(MapMapper.class);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(environment);
return new DefaultSqlSessionFactory(configuration);
}
}
4 簡單總結
總的來說使用配置文件方式更簡潔,但配置類方式,能讓我們更容易瞭解mybatis的運行。
配置類中,我也嘗試過只寫一個@bean,可以是可以,但不便於以後對代碼的維護。
如果對mybatis的運行感興趣,可以從那個官網的入門demo調試着,一步步看代碼。