【Mybatis】使用java方式实现SM框架整合

来源:互联网 发布:reshade画面优化补丁 编辑:程序博客网 时间:2024/04/28 17:56

首先导入相应的jar包

mybatis的jar包

mybatis-Spreing的jar包

Spring的相关jar包

h2数据库的驱动包


首先准备数据库相关配置jdbc.properties

jdbc.driverClassName=org.h2.Driverjdbc.url=jdbc:h2:tcp://localhost/D:/H2/h2/binjdbc.username=sajdbc.password=123456


我们可以创建一个mybatis-config.xml配置类的别名

<?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 */@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {//创建工厂beanSqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));factoryBean.setDataSource(dataSource);return factoryBean;}/** * 获取数据源 * @param env * @return */@Bean                       // 依赖Environmentpublic 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 */@Beanpublic 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@Transactionalpublic class BlogServiceImpl implements BlogService{@Autowiredprivate BlogMapper blogMapper;@Overridepublic 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();}}


测试结果如下: