Spring整合mybatis
Spring整合mybatis
小案例:(这里直接使用gradle的方式构建项目,和maven其实类似)
引入两个依赖:
implementation 'org.mybatis:mybatis-spring:2.0.7'
implementation 'org.mybatis:mybatis:3.5.10'
如果使用maven的话,就需要引入
mybatis的依赖和mybatis-spring的依赖
使用配置类的方式:
@MapperScan("com.coding.spring.mybatis")
@Configuration
public class MySpringMybatisConfig {
@Bean
public DataSource dataSource() throws Exception {
ComboPooledDataSource pool = new ComboPooledDataSource();
// 如果下面这个驱动类不好使就换成 com.mysql.cj.jdbc.Driver
pool.setDriverClass("com.mysql.jdbc.Driver");
pool.setJdbcUrl("jdbc:mysql://192.168.58.100:3306/mytest?useSSL=false");
pool.setUser("root");
pool.setPassword("123456");
return pool;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*Mapper.xml"));
return factoryBean.getObject();
}
@Bean
public DataSourceTransactionManager txManager() throws Exception {
DataSourceTransactionManager tx = new DataSourceTransactionManager(dataSource());
return tx;
}
}
使用xml加载配置的方式:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 数据源配置 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mytest?useSSL=false"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- SqlSession 工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 自动扫描 Mapper.xml 目录 -->
<property name="mapperLocations" value="classpath:/mapper/*Mapper.xml"/>
</bean>
<!-- 为指定包下的Mapper接口,创建所以代理对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.coding.spring.mybatis.**"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启注解驱动 -->
<tx:annotation-driven/>
</beans>
以上两种方式都可以,任选其一。
public class MyUserDO {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "MyUserDO{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
package com.coding.spring.mybatis;
public interface MyUserMapper {
void addUser(MyUserDO myUserDO);
MyUserDO getById(int id);
}
<?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.coding.spring.mybatis.MyUserMapper">
<resultMap id="myUserMap" type="com.coding.spring.mybatis.MyUserDO">
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<insert id="addUser" useGeneratedKeys="true" keyProperty="id">
insert into my_user (name)
values (#{name})
</insert>
<select id="getById" parameterType="int" resultType="com.coding.spring.mybatis.MyUserDO">
select * from my_user where id = #{id}
</select>
</mapper>
编写测试类:
public class MybatisTest {
private MyUserMapper myUserMapper;
// // 使用 java 注解配置方式启动
// @BeforeEach
// public void init() {
// ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MySpringMybatisConfig.class);
// myUserMapper = applicationContext.getBean(MyUserMapper.class);
// }
// 使用 xml 配置文件方式启动
@BeforeEach
public void initForXml() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-mybatis.xml");
myUserMapper = applicationContext.getBean(MyUserMapper.class);
}
@Test
public void testAddMyUser() {
MyUserDO myUserDO = new MyUserDO();
myUserDO.setName("test_user");
myUserMapper.addUser(myUserDO);
}
@Test
public void testGetUserById() {
MyUserDO myUserDO = myUserMapper.getById(6);
System.out.println(myUserDO);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-08-30 调用webservice接口报错
2020-08-30 Java设计模式之使用反序列化的方式实现单例模式
2020-08-30 Java设计模式之使用枚举类的方式创建单例
2020-08-30 使用饿汉模式创建单例模式