Spring整合MyBatis--使用xml

11 篇文章 0 订阅

Spring整合MyBatis

  1. XMl配置结合注解整合

    配置文件 :
    MyBati配置文件(SqlMapConfig.xml) 设置 起别名 插件(分页)
    mapper.xml DAO的实现
    log4j.properties 日志配置
    Spring配置文件(applicationContext.xml) 框架管理 :
    配置数据源bean 事务管理器对象 aop SqlSessionFactoryBean mapper 开启相关注解扫描
    注解:servicebean 业务层上的事务管理 单元测试

在这里插入图片描述
创建maven文件
在pom.xml 文件上的相关配置

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gem.demo</groupId>
  <artifactId>spring-mybatis-xml-annotation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  	<!-- mybatis -->
 	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
 	<dependency>
 		<!-- 坐标 -->
 		<groupId>org.mybatis</groupId>
    	<artifactId>mybatis</artifactId>
    	<version>3.5.1</version>
 	</dependency>
 	<!-- 数据库驱动 -->
 	<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
   </dependency>
   <!-- lombok -->
   <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
    </dependency>
    <!-- 单元测试 -->
     <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    <!-- log4j -->
    <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
     </dependency>
      <!-- spring核心 -->
  	<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
	<dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>5.2.2.RELEASE</version>
	</dependency>
	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
        <!-- spring整合mybatis jar -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
      </dependency>
      <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
    <dependency>
    	<groupId>com.github.pagehelper</groupId>
    	<artifactId>pagehelper</artifactId>
    	<version>5.1.2</version>
	</dependency>
  </dependencies>
</project>

数据库的相关信息:db.properties文件上的配置

#配置数据库信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/homeworkonline?serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
#配置连接池信息
jdbc.initialSize=10
jdbc.maxTotal=5
jdbc.maxIdle=5
jdbc.maxWaitMillis=5000

打印日志的相关信息,log4j,properties文件上的配置

#打印日志级别
log4j.rootLogger=debug, stdout
# 控制台输出日志
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

在mybatis的文件上的相关信息,sqlMapConfig.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>
	<settings>
		<!-- 开启全局懒加载 -->
		<setting name="lazyLoadingEnabled" value="true" />
		<!-- 按需懒加载 -->
		<setting name="aggressiveLazyLoading" value="false" />
		<setting name="lazyLoadTriggerMethods" value="" />
		<!-- 日志管理 -->
		<setting name="logImpl" value="LOG4J" />
	</settings>
	<!-- 起别名 -->
	<typeAliases>
		<package name="com.hadwinling.entity" />
	</typeAliases>
	<!-- 配置分页插件 -->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
	</plugins>
	<!-- 数据源信息交由Spring管理 -->

</configuration>

实体类:Book

package com.hadwinling.entity;



import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
	private int bid;
	private String bno;
	private String bname;
	private String author;
	private double price;
	private String mark;

	public Book(String bno, String bname, String author, double price, String mark) {

		this.bno = bno;
		this.bname = bname;
		this.author = author;
		this.price = price;
		this.mark = mark;
	}

}

在mapper包下的bookMapper.java的代码块:

package com.hadwinling.mapper;

import java.util.List;

import com.hadwinling.entity.Book;

public interface BookMapper {
	//查询所有书籍
	List<Book> findBooks();
	// 删除书籍,通过书籍编号删除
	int deleteBook(String bno);
	//新增书籍
	int addBook(Book book);

	// 修改书籍信息
	int updateBook(Book book);
	
	//按照书名模糊查询
	List<Book> findBookByBname(String bname);
}

bookMapper.xml的配置

<?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.hadwinling.mapper.BookMapper">
	<!-- 查找所有书籍 -->
	<select id="findBooks" resultType="Book">
		select * from book
	</select>
	<!-- 删除书籍,通过编号删除 -->
	<delete id="deleteBook" parameterType="String">
		delete from book where bno
		= #{bno}
	</delete>
	<!-- //增加书籍 -->
	<!-- boolean addBook(Book book); -->
	<insert id="addBook" parameterType="Book"
		useGeneratedKeys="true" keyProperty="id">
		insert into book
		(bno,bname,author,price,mark) values
		(#{bno},#{bname},#{author},#{price},#{mark})
	</insert>
	<!-- //修改书籍信息 -->
	<!-- boolean updateBook(Book book); -->
	<update id="updateBook" parameterType="Book">
		update book set bno =
		#{bno} ,bname = #{bname} ,author =#{author}, price =
		#{price},mark =
		#{mark} where bno = #{bno}

	</update>

	<!-- //按照书名查 -->
	<select id="findBookByBname" resultType="Book"
		parameterType="String">
		select * from book where bname like '%${value}%'
	</select>
</mapper>

在service包下的BookService

package com.hadwinling.service;

import java.util.List;

import com.hadwinling.entity.Book;

public interface BookService {
	// 查找所有书籍
	List<Book> findBooks();

	// 删除书籍,通过书籍编号删除
	int deleteBooks(String bno);

	// 新增书籍
	int addBook(Book book);

	// 修改书籍信息
	int updateBook(Book book);

	// 按照书名模糊查询
	List<Book> findBookByBname(String bname);
}

在service的实现类中/:bookServiceImpl 文件下

package com.hadwinling.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hadwinling.entity.Book;
import com.hadwinling.mapper.BookMapper;
import com.hadwinling.service.BookService;

@Service
@Transactional
public class BookServiceImpl implements BookService {
	@Autowired
	private BookMapper bookMapper;
	@Override
	public List<Book> findBooks() {
		// TODO Auto-generated method stub
		return bookMapper.findBooks();
	}

	@Override
	public int deleteBooks(String bno) {
		// TODO Auto-generated method stub
		return bookMapper.deleteBook(bno);
	}

	@Override
	public int addBook(Book book) {
		// TODO Auto-generated method stub
		return bookMapper.addBook(book);
	}

	@Override
	public int updateBook(Book book) {
		// TODO Auto-generated method stub
		return bookMapper.updateBook(book);
	}

	@Override
	public List<Book> findBookByBname(String bname) {
		// TODO Auto-generated method stub
		return bookMapper.findBookByBname(bname);
	}

}

测试类:这里使用单元测试类
在这里插入图片描述
BaseTest文件的配置:

package com.hadwinling;

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.hadwinling.mapper.BookMapper;
import com.hadwinling.service.BookService;

@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class BaseTest {
	@Autowired
	protected BookMapper bookMapper;
	@Autowired
	protected BookService bookService;
}

serviceTest文件的配置:

package com.hadwinling.service;

import java.util.List;
import java.util.Scanner;

import org.junit.Test;

import com.hadwinling.BaseTest;
import com.hadwinling.entity.Book;

public class ServiceTest extends BaseTest {
	Scanner input = new Scanner(System.in);
//	@Test
//	public void findBook() {
//		List<Book> books = bookMapper.findBooks();
//		for (Book book : books) {
//			System.out.println(book);
//		}
//	}
//	@Test
//	public void deleteBook() {
//		System.out.println("请输入要删除的书籍编号");
//		String bno= input.next();
//		int result = bookMapper.deleteBook(bno);
//		System.out.println(result);
//	}
//	@Test
//	public void addBook() {
//		System.out.println("请输入书籍编号");
//		String bno = input.next();
//		System.out.println("请输入书名");
//		String bname = input.next();
//		System.out.println("请输入作者");
//		String author = input.next();
//		System.out.println("请输入价格");
//		int price = input.nextInt();
//		System.out.println("请输入评价");
//		String mark = input.next();
//		Book book = new Book(bno, bname, author, price, mark);
//		int result = bookMapper.addBook(book);
//		System.out.println(result);
//	}
//	@Test
//	public void updateBook() {
//		System.out.println("请输入书籍编号");
//		String bno = input.next();
//		System.out.println("请输入书名");
//		String bname = input.next();
//		System.out.println("请输入作者");
//		String author = input.next();
//		System.out.println("请输入价格");
//		int price = input.nextInt();
//		System.out.println("请输入评价");
//		String mark = input.next();
//		Book book = new Book(bno, bname, author, price, mark);
//		int result = bookMapper.updateBook(book);
//		System.out.println(result);
//	}
	@Test
	public void findBookByBname() {
		System.out.println("输入书名");
		String bname = input.next();
		List<Book> books = bookMapper.findBookByBname(bname);
		for (Book book : books) {
			System.out.println(book);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值