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);
    }
}

posted on   ~码铃薯~  阅读(14)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源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 使用饿汉模式创建单例模式

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示