Spring+Mybatis IOC + AOP + 开启事务 模板
萌新小白刚入行Java 框架的可以试着自己拿着这个代码改一改,看看能不能运行成功
第一步:创建maven项目,在pom.xml文件中引入以下需要用到的jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>mySpring</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>spring_mybatis</artifactId><name>Archetype - spring_mybatis</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.9.7</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.12</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.22</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.22</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>compile</scope></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
</project>
第二步:连接数据库操作.
填写User 和Password 点击连接,连接无误后显示下图红色圈起来的部分.
此时右键点击红色部分再点开 Properties.
选择你需要连接数据库 .
第三步: 我们新建pojo包,继续新建实体类用于存储对象
第四步:创建mapper包,生成对应的接口\接口实现\编写SQL.xml文件 注意:创建名称时相同
(1), 接口定义:
package com.mapper;import com.pojo.User;import java.util.List;/*** @author helloZZ*/
public interface UserMapper
{List<User> selectUsers();int addUser(User user);int deleteUser(String id);
}
(2). 接口实现:
package com.mapper;import com.pojo.User;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;/*** @author helloZZ*/
public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper {@Overridepublic List<User> selectUsers() {User user = new User("8","ZZ123",23,"男","beijing","123456");UserMapper mapper = getSqlSession().getMapper(UserMapper.class);mapper.addUser(user);mapper.deleteUser("8");return mapper.selectUsers();}@Overridepublic int addUser(User user) {UserMapper mapper = getSqlSession().getMapper(UserMapper.class);return mapper.addUser(user);}@Overridepublic int deleteUser(String id) {UserMapper mapper = getSqlSession().getMapper(UserMapper.class);return mapper.deleteUser(id);}
}
(3). UserMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper"><insert id="addUser">insert into student(name,age,sex,addres,studentNumber) values(#{name},#{age},#{sex},#{addres},#{studentNumber})</insert><delete id="deleteUser">delete from student where id = #{id}</delete><select id="selectUsers" resultType="com.pojo.User">select * from student
</select></mapper>
第五步: 我们需要创建xml配置项一共有三个
(applicationContext.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><import resource="spring-dao.xml"/><bean id="userMapper" class="com.mapper.UserMapperImpl"><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>
</beans>
(spring-dao.xml)
这里注意需要更改数据库的配置!不要一股脑的copy
<?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"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttps://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsd"
><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--1.3配置连接池需要的参数--><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/填写数据库名称?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"/><property name="username" value="填写数据库的用户名称"/><property name="password" value="填写数据库的用户密码"/></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:sqlMapConfig.xml"/><property name="mapperLocations" value="classpath:com/mapper/*.xml"/></bean><!-- SqlSessionTemplate 就是我们使用的sqlSession--><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg ref="sqlSessionFactory" index="0"/></bean>
<!-- 声明事务--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean>
<!-- 配置事务--><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="addUser" propagation="REQUIRED"/><tx:method name="deleteUser" propagation="REQUIRED"/><tx:method name="updateUser" propagation="REQUIRED"/><tx:method name="queryUser" read-only="true"/><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!--配置事务切入--><aop:config><aop:pointcut id="txPointCut" expression="execution(* com.mapper.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/></aop:config>
</beans>
(sqlMapConfig.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="com.pojo"/></typeAliases>
</configuration>
第六步:创建test包下新建测试类,测试我们是否成功查询\删除\新增功能
import com.mapper.UserMapper;
import com.pojo.User;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;
import java.util.List;public class Test01 {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper userMapper = context.getBean("userMapper", UserMapper.class);List<User> users = userMapper.selectUsers();for (User user : users) {System.out.println(user);}}
}