database下的pom.xml添加
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
###########################################
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
中间可能的错误
1、Mapper.xml文件并没有在target/classes/com/spring/www/DAO下
那就是在第一步中的**##后边的内容没有粘贴,导致找不到配置文件**
2、在Mapper.xml文件中mapper的namespace位置并没有到位
mapper namespace="com.spring.www.DAO.BookDAO">
3、在有返回值的情况下要使用
<select id="queryAll" resultType="Book">
<select id="queryAllByIf" resultType="Book" parameterType="String">
select * from book where true
<if test="Bname!=null and Bname!=''">
and Bname like concat('%',#{name},'%')
</if>
</select>
如果满足if条件那就将if后边sql语句进行拼接上去生成的sql语句是
Preparing: select * from book where true and Bname like concat('%',?,'%')
注意where之后要要使用一个真值
适用于传入的参数是一个列表,用于多个值的筛选
<select id="querryAllByforeach" parameterType="List" resultType="Book">
select * from book where Bisdn in
<foreach item="item" index="index" collection="list" open="(" separator=","close=")">
#{item}
</foreach>
</select>
拼接的sql语句是
==> Preparing: select * from book where Bisdn in ( ? , ? )
==> Parameters: 001(String), 002(String)
进行模糊查询
<select id="querryAllByBind" parameterType="Book" resultType="Book">
<bind name="paran_name" value="'%'+Bname+'%'"/>
select * from book where Bname like #{paran_name}
</select>
拼接的sql语句是
select * from book where Bname like ?
链接:https://pan.baidu.com/s/1ReDMcpGz6WcMM0hq5nxK0Q 提取码:qwer
database-context.xml
<!--配置事务管理器-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
在SaleService中的OnSale前添加注释@Transactional
添加测试类
TransactionTest
import com.spring.www.Business.SaleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests;
import org.testng.annotations.Test;
@ContextConfiguration("classpath*:database-context.xml")
public class TransactionTest extends AbstractTransactionalTestNGSpringContextTests {
@Autowired
SaleService service;
@Test
public void transTest(){
service.onSale(0.5f);
}
}
这样是不能改变数据库中的值的。这样主要是为了避免”脏数据“影响其他业务
要是就是想看运行的结果,那就要在测试类中添加@Rollback(value = false),这样就能直观的看到测试的结果了
创建公开的代码仓库
添加git
在上传项目的问价夹下
bushgit init
git remote add origin 远端仓库地址
提交目录