在上文导完包和配置好环境后,首先整合Mybatis
整合Mybatis首先需要一个数据库:
我们来创建一个ssmbuild数据库,并建立book表
然后要在pojo包下创建一个对应数据库表元素的实体类:
Books.java
package pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
}
接着要利用Mybatis实现sql语句,要在Mapper包下创建Mapper接口和Mapper实现类:
UserMapper.java
package Mapper;
import pojo.Books;
import java.util.List;
public interface UserMapper {
//增加书
void addBook(Books books);
//删除书
//更新书
//查询书
List<Books> selectBook();
//查询全部书
}
我们已经在Mapper接口中创建了两个方法–add和select
对应的在Mapper实现类中要重写这两个方法
UserMapperImpl.java
package Mapper;
import org.mybatis.spring.SqlSessionTemplate;
import pojo.Books;
import java.util.List;
/**
* 原来我们的所有操作都使用sqlSession来执行,现在都使用sqlSessionTemplate
*/
public class UserMapperImpl implements UserMapper {
private SqlSessionTemplate sqlSessionTemplate;
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}
@Override
public void addBook(Books books) {
UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
mapper.addBook(books);
}
@Override
public List<Books> selectBook() {
UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
return mapper.selectBook();
}
}
接着就需要写SQL语句了
在spring-mybatis.xml中:首先绑定Mapper接口,然后在其中写Mapper接口中对应方法的SQL语句。这里我们方法是addBook和selectBook
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace绑定一个对应的Mapper接口-->
<mapper namespace="Mapper.UserMapper">
<insert id="addBook" parameterType="pojo.Books">
insert into ssmbuild.books values(#{bookID},#{bookName},#{bookCounts},#{detail});
</insert>
<select id="selectBook" parameterType="pojo.Books" resultType="pojo.Books">
select * from ssmbuild.books;
</select>
</mapper>
这样就可以用Mybatis连接数据库了,
开启Junit测试单元并在mybatis-config.xml配置log4j日志:
(配置log4j这一步在上文中已经配置完毕)
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
static Logger logger = Logger.getLogger(test.class);
@Test
public void addBooks(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
userMapper.addBook(new Books(7,"Python",7,"从入门到放弃"));
}
@Test
public void selectBook(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
List<Books> books = userMapper.selectBook();
for (Books book:books) {System.out.println(book);
}
}
创建Service层接口,和Dao层的接口一样,因为业务层要调用的方法一样:
package total.Service.pojo.service;
import org.apache.ibatis.annotations.Param;
import total.Service.pojo.pojo.Books;
import java.util.List;
public interface UserService {
//增加书
void addBook(Books books);
//删除书
void deleteBook(@Param("bookID") int id);
//更新书
//查询书
List<Books> selectBook();
//查询全部书
}
然后创建Service层(业务层)实现类:通过Dao层的对象来调用Dao层的方法
package total.Service.pojo.service;
import total.Service.pojo.Mapper.UserMapper;
import total.Service.pojo.pojo.Books;
import java.util.List;
public class UserServlceImpl implements UserService{
private UserMapper userMapper;
public void setUserMapper(UserMapper userMapper){
this.userMapper=userMapper;
}
@Override
public void addBook(Books books) {
userMapper.addBook(books);
}
@Override
public void deleteBook(int id) {
userMapper.deleteBook(id);
}
@Override
public List<Books> selectBook() {
return userMapper.selectBook();
}
}