文章目录
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调试着,一步步看代码。