mybatis深入理解


准备工作:

导入依赖pom文件中

<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

Mybits
com.whz
1.0-SNAPSHOT

4.0.0

Mybatis-02



org.mybatis
mybatis
3.5.2



org.projectlombok
lombok
1.18.20
provided



junit
junit
4.12



mysql
mysql-connector-java
5.1.47



org.springframework
spring-jdbc
5.1.9.RELEASE




org.mybatis
mybatis-spring
2.0.2



org.springframework
spring-webmvc
5.1.9.RELEASE








src/main/java

**/*.properties
**/*.xml

false


src/main/resources

**/*.properties
**/*.xml

false




Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类

可使用 SqlSessionFactoryBean来创建 SqlSessionFactory

《spring配置文件中》

配置文件类型


  

注解类型:

@Configuration
public class MyBatisConfig {
  @Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource());
    return factoryBean.getObject();
  }
}

所需的datasource:








映射器类
必须是一个接口,而不是具体的实现类

假设接口名《mapper的接口》:

配置文件类型:
public interface UserMapper {
  @Select("SELECT * FROM website") 
  List selectUser();

}

 注解类型: 

<?xml version="1.0" encoding="UTF-8" ?>
DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
namespace="com.whz.Dao.userMapper">
    <select id="selectUser" resultType="com.whz.pojo">
   select * from website
  select>

 Spring 一起使用 MyBatis使用MapperFactoryBean去整合(2)映射器(1)SqlSessionFactory 

《spring配置文件中》加入:

配置文件类型:

  
  

注解类型:

@Configuration
public class MyBatisConfig {
  @Bean
  public UserMapper userMapper() throws Exception {
    SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory());
    return sqlSessionTemplate.getMapper(UserMapper.class);
  }
}

 pojo实体类:

package com.whz.pojo;
import lombok.Data;

@Data
public class User {
    private String  account;
    private String password;
    private String name;


}
 测试
public class test {
    @Test
    public void test01() {
        ApplicationContext app= new ClassPathXmlApplicationContext("spring-dao.xml");
        UserMapper userMapper = (UserMapper) app.getBean("userMapper");
        List users = userMapper.selectUser();
        for (User user: users){
            System.out.println(user.getName());
        }
    }
}