【Mybatis】使用java方式实现SM框架整合
程序员文章站
2022-07-13 21:11:17
...
首先导入相应的jar包
mybatis的jar包
mybatis-Spreing的jar包
Spring的相关jar包
h2数据库的驱动包
首先准备数据库相关配置jdbc.properties
jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:tcp://localhost/D:/H2/h2/bin
jdbc.username=sa
jdbc.password=123456
<?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>
<!-- 设置类型别名 -->
<typeAliases>
<package name="cn.qblank.entity" />
</typeAliases>
</configuration>
创建一个AppConfig类进行整合配置
package cn.qblank;
import javax.sql.DataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@ComponentScan("cn.qblank")
@EnableTransactionManagement
@PropertySource("jdbc.properties")
@MapperScan("cn.qblank.mapper")
public class AppConfig {
/**
* 获取Session工厂bean
* @param dataSource
* @return
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
//创建工厂bean
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
factoryBean.setDataSource(dataSource);
return factoryBean;
}
/**
* 获取数据源
* @param env
* @return
*/
@Bean // 依赖Environment
public DataSource dataSource(Environment env) {
DriverManagerDataSource ds = new DriverManagerDataSource();
// env.getProperty("someKey") 获得属性值
ds.setDriverClassName(env.getProperty("jdbc.driverClassName"));
ds.setUrl(env.getProperty("jdbc.url"));
ds.setUsername(env.getProperty("jdbc.username"));
ds.setPassword(env.getProperty("jdbc.password"));
return ds;
}
/**
* 事务管理
* @param dataSource
* @return
*/
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource);
return manager;
}
}
创建对应的Service接口BlogService
package cn.qblank.service;
import cn.qblank.entity.Blog;
public interface BlogService {
/**
* 查询
* @param id
* @return
*/
Blog findOne(Long id);
}
实现接口BlogServiceImpl
package cn.qblank.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.qblank.entity.Blog;
import cn.qblank.mapper.BlogMapper;
@Service
@Transactional
public class BlogServiceImpl implements BlogService{
@Autowired
private BlogMapper blogMapper;
@Override
public Blog findOne(Long id) {
return blogMapper.findOne(1L);
}
}
书写对应的BlogMapper.xml配置
<?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="cn.qblank.mapper.BlogMapper">
<!-- 一对一案例:查询作者以及其博客信息 -->
<select id="findOne" resultMap="blogResult">
SELECT a.id blog_id,a.name author_name,b.id,b.title blog_title,b.author_id
FROM blog b INNER JOIN author a ON a.id = b.author_id
where a.id = #{id};
</select>
<resultMap type="Blog" id="blogResult">
<id property="id" column="blog_id"/>
<result property="title" column="blog_title"/>
<association property="author" javaType="Author">
<id property="id" column="author_id"/>
<result property="name" column="author_name"/>
</association>
</resultMap>
</mapper>
这样,Spring+mybatis的简单整合就完成了,接下来,我们来测试一下
package cn.qblank.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import cn.qblank.AppConfig;
import cn.qblank.entity.Blog;
import cn.qblank.service.BlogService;
/**
* 三大框架整合
* @author Administrator
*/
public class MybatisSpringTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
BlogService blogService = context.getBean(BlogService.class);
Blog blog = blogService.findOne(1L);
System.out.println(blog);
context.close();
}
}
上一篇: mybatis和spring整合
下一篇: spring与mybatis整合