MyBatis 编程进阶~mybatis基于接口方式实现对数据库中的数据进行操作

时间:2021-02-19 07:58:15

1.1. MyBatis基于接口实现的基本步骤

Step01: 创建maven桌面项目添加依赖

Step02: 创建配置文件config.propertis(内容为数据库相关)

Step03: 创建mybatis核心配置文件mybatis-configs.xml文件

Step04: 配置Mybatis基础数据服务(properties,datasource,mapper)

Step05: 创建映射文件BlogMapper.xml

Step06: 创建实体类Blog(对应,可用于封装表中数据)

Step07: 创建BlogDao接口,添加相关方法.

Step08: 配置BlogMapper映射文件,添加相关元素.

Step09: 基于BlogDao接口与映射文件实现CRUD操作

1.2. MyBatis进阶编程实现

1.2.1. 创建Maven桌面项目

创建maven桌面项目添加依赖


<!-- 添加mybatis依赖 -->

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.2.8</version>
 </dependency>

<!-- 添加mysql驱动依赖 -->

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.40</version>
 </dependency>

<!-- 添加junit依赖 -->

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
 </dependency>


1.2.2. 创建config.properties文件

在src/main/resources目录下创建config.properties文件,文件中定义

系统中的一些常用配置信息,例如访问数据库的相关信息,其内容如下

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/cgbmybatis
username=root
password=root

1.2.3. 创建mybatis核心配置文件

在src/main/resources目录下创建mybatis-configs.xml文件,并配置数据源等相关信息,数据信息从config.properties文件读取.


<?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>
  <!--配置properties文件-->
  <properties resource="config.properties"/>
  <!-- 配置初始化环境(连接) -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url"  value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

1.2.4. 创建Blog实体对象

创建Blog类实现与数据库中Blog实现映射

public class Blog {
	private Integer id;
	private String title;
	private String content;
	private Date createdTime;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getCreatedTime() {
		return createdTime;
	}
	public void setCreatedTime(Date createdTime) {
		this.createdTime = createdTime;
	}
	@Override
	public String toString() {
		return "Blog [id=" + id + ", title=" + title + ", content=" + content + ", createdTime=" + createdTime + "]";
	}
}

1.2.5. 创建BlogDao接口

创建数据访问接口,并添加相关方法

package com.jt.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jt.entity.Blog;
public interface BlogDao {
	 /***
	  * 根据id进行对象查找
	  * @param id
	  * @return
	  */
	 Blog findBlogById(Integer id);
	 List<Blog> findPageBlogs(
		     @Param("offset")Integer offset,
		     @Param("pageSize")Integer pageSize);
	 int insertObject(Blog blog);
	 int updateObject(Blog blog);
	 int deleteObject(Integer id);
}

1.2.6. 创建BlogMapper映射文件

<?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.jt.dao.BlogDao">

</mapper>

BlogMapper文件中添加与BlogDao接口对应的映射元素

添加基于ID进行查询的元素

<select id="findBlogById"
           parameterType="int"
           resultType="blog">
           select *
           from blog
           where id=#{id}
   </select>

添加分页查询元素

  <select id="findPageBlogs"
           resultType="blog">
           select *
           from blog
           limit #{offset},#{pageSize}
   </select>

添加insert元素

   <insert id="insertObject"
           parameterType="blog">
           insert into blog
           (id,title,content,createdTime)
           values
           (null,#{title},#{content},now())
   </insert>

添加更新元素

   <update id="updateObject"
           parameterType="blog">
           update blog
           set title=#{title},content=#{content}
           where id=#{id}
   </update>

添加删除元素

<delete id="deleteObject"
           parameterType="int">
           delete from blog where id=#{id}
</delete>

在mybatis-configs.xml中添加BlogMapper文件

1.2.7. 创建单元测试类执行测试

创建单元测试类,并添加相关方法实现基于Dao接口方式的数据库操作.

public class TestBlog01 {

	private SqlSessionFactory factory;
	
	@Before
	public void init()throws IOException{
		factory=new SqlSessionFactoryBuilder()
		.build(Resources.getResourceAsStream(
				"mybatis-configs.xml"));
	}
	@Test
	public void testFindBlogById(){
		//1.创建session
	    SqlSession session=factory.openSession();
		//2.执行sql
	    //2.1获取dao对象
	    BlogDao dao=
	    session.getMapper(BlogDao.class);
	    //2.2执行dao中方法
	    Blog blog=dao.findBlogById(1);
	    System.out.println(blog);
		//3.关闭session
	    session.close();
	}
	@Test
	public void testFindPageBlogs(){
		//1.创建session
		SqlSession session=factory.openSession();
		//2.执行sql
		//2.1获取dao对象
		BlogDao dao=
				session.getMapper(BlogDao.class);
		//2.2执行dao中方法
		List<Blog> list=dao.findPageBlogs(0, 2);
		for(Blog b:list){
		System.out.println(b);
		}
		//3.关闭session
		session.close();
	}
	@Test
	public void testInsertObject(){
		//1.创建session
		SqlSession session=factory.openSession();
		//2.执行sql
		//2.1获取dao对象
		BlogDao dao=
				session.getMapper(BlogDao.class);
		//2.2执行dao中方法
		Blog blog=new Blog();
		blog.setTitle("te");
		blog.setContent("te...");
		dao.insertObject(blog);
		session.commit();
		//3.关闭session
		session.close();
	}
	
}