纯注解版spring与mybatis的整合过程(springboot mybatis注解开发)

网友投稿 451 2022-07-27


今天给大家分享纯注解版spring与mybatis的整合

mybatis包下:有这几个,上面图片没有展开

配置Bean:MyBatisAutoConfiguration

User

UserDAO

MybatisProperties

MyBatisAutoConfiguration:

package com.baizhiedu.mybatis;

import com.alibaba.druid.pool.DruidDataSource;

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.core.io.ClassPathResource;

import org.springframework.core.io.Resource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

import java.io.IOException;

@Configuration

@ComponentScan(basePackages = "com.baizhiedu.mybatis")

@MapperScan(basePackages = "com.baizhiedu.mybatis") //扫描dao接口对象

public class MyBatisAutoConfiguration {

//连接池对象

@Bean

public DataSource dataSource(){

DruidDataSource dataSource=new DruidDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis?useUnicode=true&charaterEcoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("123456");

return dataSource;

}

//工厂对象

@Bean

public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){

SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(dataSource);

sqlSessionFactoryBean.setTypeAliasesPackage("com.baizhiedu.mybatis");

//设置Mapper文件的路径,这个只会 扫描一个Mapper文件,如果需要扫描多个文件,则需要让他扫描包

sqlSessionFactoryBean.setMapperLocations(new ClassPathResource("UserDAOMapper.xml"));

//通配写法让他扫描包下的所有Mapper文件资源

try {

ResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();

Resource[] resources=resolver.getResources("com.baizhiedu.mapper/*Mapper.xml");

sqlSessionFactoryBean.setMapperLocations(resources);

} catch (IOException e) {

e.printStackTrace();

}

return sqlSessionFactoryBean;

}

}

User:

package com.baizhiedu.mybatis;

public class User {

private Integer id;

private String name;

private String password;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) http://{

this.password = password;

}

}

UserDAO:

package com.baizhiedu.mybatis;

public interface UserDAO {

public void save(User user);

}

UserDAOMapper.xml:

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insert into tb_users (name,password) values (#{name},#{password})

TestMyBatis:

package com.baizhiedu;

import com.baizhiedu.mybatis.MyBatisAutoConfiguration;

import com.baizhiedu.mybatis.User;

import com.baizhiedu.mybatis.UserDAO;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestMyBatis {

//用于测试Spring+Mybatis注解的整合

@Test

public void test1(){

ApplicationContext ctx=new AnnotationConfigApplicationContext(MyBatisAutoConfiguration.class);

UserDAO userDAO=(UserDAO)ctx.getBean("userDAO");

User user=new User();

user.setName("annotation1");

user.setPassword("123456");

userDAO.save(user);

}

}

上面配置Bean:MyBatisAutoConfiguration:存在数据耦合,可以通过配置文件来解耦合:

mybatis.properties:

mybatis.driverClassName=com.mysql.jdbc.Driver

mybatis.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&charaterEcoding=utf-8

mybatis.username=root

mybatis.password=123456

mybatis.typeAliasesPackages=com.baizhiedu.mybatis

mybatis.mapperLocations=com.baizhiedu.mapper/*Mapper.xml

定义类来封装配置文件中的配置信息:MybatisProperties:

package com.baizhiedu.mybatis;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.PropertySource;

import org.springframework.stereotype.Component;

@Component

@PropertySource("classpath:mybatis.properties") //读取配置文件

public class MybatisProperties {

@Value("${mybatis.driverClassName}")

private String driverClassName;

@Value("${mybatis.url}")

private String url;

@Value("${mybatis.username}")

private String username;

@Value("${mybatis.password}")

private String password;

@Value("${mybatis.typeAliasesPackages}")

private String typeAliasesPackages;

@Value("${mybatis.mapperLocations}")

private String mapperLocations;

public String getDriverClassName() {

return driverClassName;

}

public void setDriverClassName(String driverClassName) {

this.driverClassName = driverClassName;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getTypeAliasesPackages() {

return typeAliasesPackages;

}

public void setTypeAliasesPackages(String typeAliasesPackages) {

this.typeAliasesPackages = typeAliasesPackages;

}

public String getMapperLocations() {

return mapperLocations;

}

public void setMapperLocations(String mapperLocations) {

this.mapperLocations = mapperLocations;

}

}

更改配置MyBatisAutoConfiguration:

package com.baizhiedu.mybatis;

import com.alibaba.druid.pool.DruidDataSource;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.ClassPathResource;

import org.springframework.core.io.Resource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

import java.io.IOException;

@Configuration

@ComponentScan(basePackages = "com.baizhiedu.mybatis")

@MapperScan(basePackages = "com.baizhiedu.mybatis") //扫描dao接口对象

public class MyBatisAutoConfiguration {

@Autowired //注解 自定义类型注入,用来解耦合

private MybatisProperties mybatisProperties;

//连接池对象

@Bean

public DataSource dataSource(){

DruidDataSource dataSource=new DruidDataSource();

dataSource.setDriverClassName(mybatisProperties.getDriverClassName());

dataSource.setUrl(mybatisProperties.getUrl());

dataSource.setUsername(mybatisProperties.getUsername());

dataSource.setPassword(mybatisProperties.getPassword());

return dataSource;

}

//工厂对象

@Bean

public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){

SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(dataSource);

sqlSessionFactoryBean.setTypeAliasesPackage(mybatisProperties.getTypeAliasesPackages());

//设置Mapper文件的路径,这个只会 扫描一个Mapper文件,如果需要扫描多个文件,则需要让他扫描包

sqlSessionFactoryBean.setMapperLocations(new ClassPathResource("UserDAOMapper.xml"));

//通配写法让他扫描包下的所有Mapper文件资源

try {

ResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();

Resource[] resources=resolver.getResources(mybatisProperties.getMapperLocations());

sqlSessionFactoryBean.setMapperLocations(resources);

} catch (IOException e) {

e.printStackTrace();

}

return sqlSessionFactoryBean;

}

}

TestMyBatis:test:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java为实体类动态添加属性的方法详解(java给实体类属性默认值)
下一篇:Java实现替换Word中文本和图片功能(word里面图片替换)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~