2018年1月25日13:27:30
Spring入门4 Spring和MyBatis整合 事物管理如果异常,数据库是不会修改的,保证数据的一致性准确性。
步骤
// 第一步 新建项目把一堆包粘贴到lib里添加依赖
//
// 第二步 把建设Spring 把mybatis-config.xml和log4j.properties和applicationContext.xml在SRC里
//
// 第三步 applicationContext.xml文件第一个bean的url行改库名字
//
// 第四步 com.bdqn.entity包创建User实体类 序列号 set get toString
//
// 第五步 com.bdqn.dao 包创建 UserMapper.java接口 写增删改查模糊查抽象方法 把UserMapper.xml粘贴进去 命名空间写到包名.接口名 id是各个抽象方法名字
//
// 第六步 com.bdqn.service 创建UserService接口 粘贴抽象方法
//
// 第七步 com.bdqn.serviceimpl包实现UserService接口 私有化dao包里的接口 private UserMapper userMapper; set get 方法 重写方法 返回的是userMapper。方法名
//
// 第八步 applicationContext.xml文件配置DAO和配置业务Bean里 注意修改包名类名
//
// 第九步 测试类就根据id获得bian了
创建数据库的语句
// CREATE DATABASE USER CHAR SET utf8;
// USE USER;
// CREATE TABLE USER(
// uId INT(20)AUTO_INCREMENT NOT NULL PRIMARY KEY ,
// uName VARCHAR(20),
// uPwd VARCHAR(20)
// )CHARSET="utf8";
// INSERT INTO USER VALUES(1,"张三","123");
// INSERT INTO USER(uName,uPwd) VALUE("李四","456");
// INSERT INTO USER(uName,uPwd) VALUE("王五","789");
// INSERT INTO USER(uName,uPwd) VALUE("杨六","741");
// UPDATE USER SET uName="教的授",uPwd="677" WHERE uId=5;
// DELETE FROM USER WHERE uId=4;
// SELECT * FROM USER WHERE uName LIKE "%老%";
测试类的main方法测试
User u=new User();
u.setuId(7);
u.setuName("老铁dd头");
u.setuPwd("666878");
int num=userService.addUser(u);
System.out.println(num);
// User u=new User();
// u.setuId(7);
// u.setuName("老铁头");
// u.setuPwd("6667");
// int num=userService.updateUser(u);
// System.out.println(num);
// User u=new User();
// u.setuId(3);
// u.setuName("老w铁头");
// u.setuPwd("66d67");
// int num=userService.delUser(u);
// System.out.println(num);
// User u=new User();
// u.setuId(39);
// u.setuName("铁");
// u.setuPwd("6644d67");
// List<User> list=userService.mohu(u);
// for (User user : list) {
// System.out.println(user.toString());
// }
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" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 第一个bean是读取以前JDBC的数据库驱动XML文件 第一行第固定的 不要带 后面是改库名 用户名 密码 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!-- <property name="url">
<value><![CDATA[jdbc:mysql://127.0.0.1:3306/user?
useUnicode=true&characterEncoding=utf-8]]></value>
</property> -->
<!-- 这一个连接到名叫user的数据库 -->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/user?
useUnicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<!-- 配置SqlSessionFactoryBean 是以前读取MyBatis的mybatis-config.xml文件-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 引用数据源组件 驱动-->
<property name="dataSource" ref="dataSource" />
<!-- 引用MyBatis配置文件中的配置 mybatis核心XML-->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 配置SQL映射文件信息 -->
<!-- <property name="mapperLocations">
<list>
<value>classpath:cn/smbms/dao/**/*.xml</value>
</list>
</property> -->
</bean>
<!-- 配置DAO -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- value改包名.接口名 可以点过去就OK-->
<property name="mapperInterface" value="com.bdqn.dao.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- 配置业务Bean -->
<!-- 改包名.serviceImpl所在 能点过去就OK-->
<bean id="userService" class="com.bdqn.serviceimpl.UserServiceImpl">
<property name="userMapper" ref="userMapper" />
</bean>
<!-- 定义事务管理器 为什么使用事物 保持数据的一致性 准确性-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 定义切面 -->
<aop:config>
<!-- expression="execution(* com.bdqn.service..*.*(..))" -->
<aop:pointcut id="serviceMethod"
expression="execution(* com.bdqn.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
</aop:config>
</beans>
mybatis-config.xml 文件
取别名 到包就可以
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--类型别名 -->
<typeAliases>
<package name="com.bdqn.entity" />
</typeAliases>
</configuration>