Spring整合MyBatis

使用配置文件的Mybatis的步骤

1.Maven导入坐标,然后写配置文件

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

2.写一个Main方法加载SqlSessionFactory

//第一步是先加载出SqlSessionFactory
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.在Mapper包里面写Mapper接口,完成相应的方法(不需要实现,把对应的方法,参数类型,返回值类型填进去就可以了)

4.写映射文件跟接口方法相对应

<?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">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

5.然后获取SqlSession对象,获取Mapper代理对象,执行sql

注:前面这些东西,是在官网上面入门案例拿到的,需要按照自己要求来改哟,后面的也是

我们现在再来看注解开发,也就是spring整合MyBatis怎么整合的


@Configuration
@ComponentScan("扫描路径")
@PropertySource("classpath:配置文件名称")
//导入第三方bean,就是我们需要整合代替Mybatis文件的配置类,以及jdbc的配置类
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String userName;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}

public class MybatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //给实体类设置别名
        sqlSessionFactoryBean .setTypeAliasesPackage("实体类路径");
        //加载配置文件
        sqlSessionFactoryBean .setDataSource(dataSource);
        return sqlSessionFactoryBean ;
    }

    // 然后就是下面这个类,这个类很重要,有着自动往Mapper接口对象中,注入Mapper代理对象的功能
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer .setBasePackage("Mapper接口路径");
        return mapperScannerConfigurer ;
    }
}
@Service
public class UserImp implements UserService{


    /**这个地方跟上一张代码MapperScannerConfigurer 这个对象来相互映射,会自己往这里注入Mapper代理对象,然后实现他的方法,这是一种多态的做法        */
    @Autowired
    private UserMapper userMapper;

    public void save(User user) {
        accountDao.save(user);
    }

    public void update(User user){
        accountDao.update(account);
    }

    public void delete(Integer id) {
        accountDao.delete(id);
    }

    public UserfindById(Integer id) {
        return accountDao.findById(id);
    }

    public List<User> findAll() {
        return userMapper.findAll();
    }
}

 最后我们写测试方法,来测试一下

public class TestDemo {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new      AnnotationConfigApplicationContext(SpringConfig.class);
        //其实这个地方也是多态的做法,这个地方是把实现了UserService接口的类给这个接口对象来接
        UserService userService = applicationContext .getBean(UserService.class);

        User user = UserService.findById(1);
        System.out.println(user);
    }
}

运行一下

5b7c4e5d45d44c6fb099d5e7ee01459c.png

注:这些地方要按照自己的想法,来修改哦,不要照抄照搬,代码里面有注释的,很清楚,希望能够理解文章的思想,欢迎各位大佬的指正

 

respect!!!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值