spring整合mybatis
第一步导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
第二步创建springconfig类
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
/**
**/
@Configuration
@PropertySource("jdbc.properties")
@ComponentScan("com.wc")
@Import({JDBCconfig.class,MybatisConfig.class })
//@MapperScan("com.wc.dao")
public class SpringConfig {
}
第三步写实体类
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;
/**
**/
@ToString
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User {
private Integer id;
private String name;
private String phone;
private Integer age;
private LocalDateTime times;
}
第四步写mapp的接口
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.dao;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
/**
**/
@Repository
public interface UserDao {
@Update("update tb_user set name=${name}")
int updeta(String name);
}
第五步写逻辑层
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.servicer.impl;
import com.wc.dao.UserDao;
import com.wc.servicer.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
**/
@Repository
public class UserSeviceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public int update(String name) {
return userDao.updeta(name);
}
}
package com.wc.servicer;
public interface UserService {
int update(String name);
}
第六步编写mybatis的配置
spring提供了SqlsessionFactoryBean类用于获取sqlsession对象,我们需要注入一个datasource数据源对象,并定义sqlsessionfactory的mapp包扫描;
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
/**
*
**/
public class MybatisConfig {
@Bean
public SqlSessionFactoryBean sessionFactory(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setTypeAliasesPackage("com.wc.domain");
sqlSessionFactoryBean.setDataSource(dataSource);
return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.wc.dao");
return msc;
}
}
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.mysql.cj.xdevapi.SessionFactory;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import javax.sound.midi.Soundbank;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
**/
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class JDBCconfig{
@Value("${jdbc.driver}")
private String dirver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.name}")
private String username;
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName(dirver);
return dataSource;
}
}
第七步测试
这个时候我们只需要获取我们业务逻辑层的对象就可以操作数据库了
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc;
import com.wc.config.JDBCconfig;
import com.wc.config.SpringConfig;
import com.wc.dao.UserDao;
import com.wc.servicer.UserService;
import com.wc.servicer.impl.UserSeviceImpl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.SQLException;
/**
**/
public class APP {
public static void main(String[] args) throws IOException {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
UserSeviceImpl bean = context.getBean(UserSeviceImpl.class);
System.out.println(bean.update("121"));
}
}