Spring-mybatis
回顾Spring-mybatis 与 mybatis的结构比较
对比
Spring-mybatis 三大改变(准确是2个改变 1.覆盖配置 2.改写方法)
1.使用Spring方式实现了原来写在mybatis里面获取SqlSession的工具类(自定义的)
2.可以使用Spring方式实现mybatis-config.xml里面的配置(也可以两者互通)
3.可以使用Spring方式实现接口的方法(也可使用注解) [然后方法里面去获得对应的mapper]
相关依赖
<dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>5.2.0.RELEASEversion> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.12version> <scope>Test_885scope> dependency> <dependency> <groupId>org.aspectjgroupId> <artifactId>aspectjweaverartifactId> <version>1.9.4version> <scope>runtimescope> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.47version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.3version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> <version>5.3.18version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> <version>2.0.6version> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <version>1.18.12version> dependency>
静态资源过滤
dependencies> <build> <resources> <resource> <directory>src/main/resourcesdirectory> <includes> <include>**/*.propertiesinclude> <include>**/*.xmlinclude> includes> resource> <resource> <directory>src/main/javadirectory> <includes> <include>**/*.propertiesinclude> <include>**/*.xmlinclude> includes> resource> resources> build>
改写方法1
xml
<bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="my7shig69l>A"/>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource88" />
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/>
bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
bean>
<bean id="userMapper_01" class="com.ljm.dao.UserMappermpl">
<property name="sqlSession" ref="sqlSession"/>
bean>
实现类
public class UserMappermpl implements UserMapper{ //原来所有操作都使用sqlSession执行,现在使用SqlSessionTemplate; private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public Listselect_user(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.select_user(); } }
测试
public void test02() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper userMapper = context.getBean("userMapper_01",UserMapper.class); for (User user : userMapper.select_user()) { System.out.println(user); } }
改写方法2(本质与方法一相同,不过是简化了步骤)
xml
<bean id="dataSource88" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="my7shig69l>A"/> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource88" /> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/ljm/dao/UserMapper.xml"/> bean> <bean id="userMapper_02" class="com.ljm.dao.UserMappermpl02"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> bean>
实现类
public class UserMappermpl02 extends SqlSessionDaoSupport implements UserMapper{ // SqlSessionDaoSupport这个类帮忙写了之前的代码 public int insert_user(User user){ return getSqlSession().getMapper(UserMapper.class).insert_user(user); } }
测试
public void test03() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper userMapper = context.getBean("userMapper_02",UserMapper.class); for (User user : userMapper.select_user()) { System.out.println(user); } }
Spring 相关配置(见i上面id=sqlSessionFactory)
指定mybatis-config.xml文件
指定UserMapper.xml文件