Spring整合Mybatis注解方式

Spring整合Mybatis注解方式Spring整合Mybatis(注解方式)目录Spring整合Mybatis(注解方式)环境准备纯注解方式配置类具体内容测试类具体内容环境准备jar包:Spring所需依赖:spring-context、spring-aspects、aspectjrt、aspectjweaver、spring-tx、spring-jdbcmybatis所需要:mybatis、mybatis-spring、mysql-connector-java、(druid、c3p0、HikariCP)辅

大家好,又见面了,我是你们的朋友全栈君。

Spring整合Mybatis(注解方式)

目录

  • Spring整合Mybatis(注解方式)
    • 环境准备
    • 纯注解方式
    • 配置类具体内容
    • 测试类具体内容

环境准备

jar包:

  • Spring所需依赖:spring-context、spring-aspects、aspectjrt、aspectjweaver、spring-tx、spring-jdbc
  • mybatis所需要:mybatis、mybatis-spring、mysql-connector-java、(druid、c3p0、HikariCP)
  • 辅助性依赖:logback-classic、lombok、spring-test、junit、mapper(可选)、pagehelper(可选)

数据库:mysql

服务层代码

@Service
@Data
public class UserService implements IUserService { 
   

    private SqlSessionTemplate sqlSession;
    private UserMapper mapper;

    public UserService(SqlSessionTemplate sqlSession){ 
   
        this.sqlSession=sqlSession;
        mapper=sqlSession.getMapper(UserMapper.class);
    }

    @Override
    public List<User> getAll() { 
   
        return mapper.getAll();
    }
}

mapper.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="com.hello.mapper.UserMapper">

    <select id="getAll" resultType="user">
        select * from user
    </select>

</mapper>

纯注解方式
纯注解方式需要一个配置类来代替xml配置文件的作用,需在配置文件上注

//注解扫描
@ComponentScan(basePackages = "com.hello")
//声明当前类为配置类
@Configuration

配置类中@Bean相当于xml的标签
通过@Bean将类放入spring容器,也可以通过注解扫描

配置类具体内容

@ComponentScan(basePackages = "com.hello")
@Configuration
public class Config { 
   

    //配置数据库连接池
    @Bean
    public DataSource dataSource(){ 
   
    	//使用HikariCP连接池
        HikariDataSource hikariDataSource = new HikariDataSource();
        //配置连接池的jdbcUrl属性
        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm?servexrTimezone=GMT%2B8");
        //账号
        hikariDataSource.setUsername("root");
        //密码
        hikariDataSource.setPassword("root");
        //驱动Driver
        hikariDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        return hikariDataSource;
    }

    //配置sqlSessionFactory
    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception { 
   
    	//在spring和Mybatis整合中采用mybatis提供的SQLSessionFactoryBean对象
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //为sqlSessionFatoryBean设置连接池属性
        sqlSessionFactoryBean.setDataSource(dataSource());
        //获取PathMatchingResourcePatternResolver对象为扫描mapper文件做准备
        PathMatchingResourcePatternResolver path = new PathMatchingResourcePatternResolver();
		//设置mapper文件位置 
 sqlSessionFactoryBean.setMapperLocations(path.getResources("classpath*:com/hello/mapper/**/*.xml"));
 		//为javaBean对象设置别名
        sqlSessionFactoryBean.setTypeAliasesPackage("com.hello.bean");
        //返回SqlSessionFactory对象
       return  sqlSessionFactoryBean.getObject();
    }

    //配置sqlSession
    @Bean
    public SqlSessionTemplate sqlSessionTemplate() throws Exception { 
   
    //将SqlSessionFactory作为参数传入构造方法
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactoryBean());
        return sqlSessionTemplate;
    }

    @Bean
    public UserService userService() throws Exception { 
   
        UserService userService = new UserService(sqlSessionTemplate());
        return userService;
    }
}

测试类具体内容

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { 
   Config.class})
public class AppTest 
{ 
   
    @Autowired
    public UserService userService;
    @Test
    public void getALL(){ 
   
        List<User> users = userService.getAll();
        for (User user:users) { 
   
            System.out.println(user);
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133518.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ssr错误端口已被占用_ssr端口设置是随意的吗

    ssr错误端口已被占用_ssr端口设置是随意的吗在Windows下使用SSR客户端的时候经常会碰到启动SSR客户端弹出1080端口被占用的提示,超级的烦人,原因你懂的。明月最近也是频繁的碰到这个问题,并且是公司、家里电脑都碰上这个问题了,虽然只是每次电脑断电关机重启后会出现,一般等个几分钟后再次重启SSR客户端也就消失了,不过,很明显这很不科学,既然提示是被“占用”了,那么就要找到“占用”的罪魁祸首来!今天就给大家分享一下具…

  • LRC格式转换

    LRC格式转换[code="java"]importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Co…

    2022年10月22日
  • 基于遗传算法的BP神经网络优化算法

    基于遗传算法的BP神经网络优化算法遗传算法优化BP神经网络分为BP神经网络结构确定、遗传算法优化和BP神经网络预测3个部分。其中,BP神经网络结构确定部分根据拟合函数输入输出参数个数确定BP神经网络结构,这样就可以确定遗传算法的优化参数个数,进而确定遗传算法个体的编码长度。因为遗传算法优化的参数是BP神经网络的初始权值和阈值,只要网络的结构已知,权值和阈值的个数就已知了。种群中的每个个体都包含了一个网络所有权值和阈值,个体通过

  • windows换行符转unix

    windows换行符转unixdos2unix先安装git,git自带dos2unix命令行工具。gitbash下执行批量转换命令:find.-name”*”|xargsdos2unix

  • mish函数_实现多态的方式不包括

    mish函数_实现多态的方式不包括classMish(nn.Module):@staticmethoddefforward(x):returnx*F.softplus(x).tanh()classMemoryEff

  • 校园智能安防监控解决方案

    校园智能安防监控解决方案目前,我国基本上还处于人防和物防的传统状态,技术防控处于起步阶段,尽管政府和校方不断加大人防和物防的投入并取得了一定的效果,但面对日益复杂多变的校园环境和社会因素,暴力犯罪、偷盗抢劫、意外事件时有发生,加之疫情防控常态化趋势,校园里仍旧存在诸多不可控的安全隐患。为更好的应对校园迫切的安全管控及疫情防控常态化需求,提升校园安全监控能力,是社会和校方迫不及待的需求。基于校园安全防控需求,拟在全市中小学和幼儿园中建立“平安校园”“智慧安防”系统,建设一套智能化、可视化、全方位的视频监控系统,并与公安系统实时联

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号