MyBatis持久层操作&环境搭建

MyBatis

  • MyBatis是一个优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程
  • MyBatis可以使用简单的XML或注解来配置和映射原生信息(即传统持久层操作),将接口和Java的实体类【普通的Java对象】映射成数据库中的记录。

1.搭建 maven项目

在这里插入图片描述

打包成war包有红叉是因为这个web项目没有web.xml

生成一下web.xml文件就ok了。

2.导入MyBatis项目jar包

  • maven仓库找MyBatis相关的jar包

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.17</version>
    </dependency>
    
    
    

3.创建数据库对应的实体类

在这里插入图片描述

package com.kuang.pojo;
public class Books {
	private int bookID;
	private String bookName;
	private int bookCounts;
	private String detail;
	public Books() {
	}
	public Books(int bookID, String bookName, int bookCounts, String detail) {
		this.bookID = bookID;
		this.bookName = bookName;
		this.bookCounts = bookCounts;
		this.detail = detail;
	}
	public int getBookID() {
		return bookID;
	}
	public void setBookID(int bookID) {
		this.bookID = bookID;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public int getBookCounts() {
		return bookCounts;
	}
	public void setBookCounts(int bookCounts) {
		this.bookCounts = bookCounts;
	}
	public String getDetail() {
		return detail;
	}
	public void setDetail(String detail) {
		this.detail = detail;
	}
	@Override
	public String toString() {
		return "Books [bookID=" + bookID + ", bookName=" + bookName + ", bookCounts=" + bookCount + ", detail="
				+ detail + "]";
	}
}

4.编写Mapper接口

public interface BooksMapper {
	List<Books> queryAllBooks();
}

5.编写Mapper.xml

  • MyBatis参考文档找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="org.mybatis.example.BlogMapper">
      <select id="selectBlog" resultType="Blog">
        select * from Blog where id = #{id}
      </select>
    </mapper>
    
    <mapper namespace="com.kuang.Mapper.BooksMapper"><!-- namespace:需要映射的接口的地址 -->
    	<select id="queryAllBooks" resultType="Books"><!-- id:需要执行的方法名   resultType:结果集类型 -->
    		select * from books
    	</select>
    </mapper>
    

6.编写MyBatsis核心配置文件: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>
<properties resource="mysql.properties"></properties>
<typeAliases>
  <package name="com.kuang.pojo"/><!-- 给实体类设置别名,这样在填写实体类的时候会自动拼接,不用写全限定类名 -->
</typeAliases>
  <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>
  <mappers>
    <mapper resource="com/kuang/mapper/BooksMapper.xml"/>
  </mappers>
</configuration>

标签需要按照顺序排放(顶层结构),不然会报错

在这里插入图片描述

7.编写MyBatisUtil类

需要一个方法返回SqlSession,方便使用sqlSession

需要一个方法返回 T getMapper(Class mapper) ,方便获取接口引用并调用要执行的持久层操作方法

private static SqlSessionFactory sqlSessionFactory;
	static {
			InputStream inputStream;
			try {
				inputStream = Resources.getResourceAsStream("mybatis-config.xml");
				sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
			}
		
	}
	
	public static SqlSession getSqlSession(){
		SqlSession sqlSession = sqlSessionFactory.openSession();
		return sqlSession;
	}
	
	public static  <T> T getMapper(Class<T> mapper) {
		SqlSession sqlSession = getSqlSession();
		return sqlSession.getMapper(mapper);
	}

8.大功告成,测试成功

public static void main(String[] args) {
		BooksMapper mapper = MyBatisUtils.getMapper(BooksMapper.class);
		List<Books> list = mapper.queryAllBooks();
		System.out.println(list);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值