MyBatis在eclipse环境下搭建+“Java+Mysql+Mybatis实现一个简单的图书信息录入”
MyBatis封装了JDBC操作(还有Hibernate\JDO\JPA\mybatis)
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
映射通过注解实现,以前是通过xml。
环境配置:
下载官方的Java版本,搭建环境两种方法,一种就是下载好,放在一个Java_lib目录,右键要加的项目,
第二种方法在实际的项目更常用写,eclipse里面右键转为
转成功后,第一次好像要下载点东西,然后
添加依赖,填上响应的名字,版本号,OK,即可下载。我们在pom.xml里可以控制版本等。。。。
代码:
代码注释很详细了,直接看吧:
App.java:(注意测试需要注释不同的代码)
package com.zmz.orm; import java.io.IOException; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class App { public static void main(String[] args) { // SQL 会话(数据库连接)工厂 // mybatis 对 pool 的封装 try { SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(Resources.getResourceAsReader("com/zmz/orm/config.xml")); // 一次会话 // Connection SqlSession session = factory.openSession(); // 获得了接口的一个具体实现(实例) // mybatis 根据注解创建了接口的实力 BookMapper mapper = session.getMapper(BookMapper.class); mapper.save(new Book("t1", "a1", 23)); mapper.save(new Book("t2", "a2", 34)); List<Book> list = mapper.findAll(4, 0);// 从下标0开始,取4个,ID降序排序了 for (Book b : list) { System.out.println(b); } // 会话提交 session.commit(); System.out.println("save"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Book.java:
package com.zmz.orm; public class Book { int id; String title; String author; int price; // create table books(id int primary key auto_increment,title varchar(40),author varchar(40),price int); public Book() { } public Book(String title, String author, int price) { super(); this.title = title; this.author = author; this.price = price; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public String toString() { return "Book [id=" + id + ", title=" + title + ", author=" + author + ", price=" + price + "]"; } }
BookMapper.java(核心的映射代码):
package com.zmz.orm; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; /* * 映射 SQL方法 */ public interface BookMapper { @Insert("insert into books(author,title,price) values(#{author}, #{title}, #{price})") void save(Book b); @Select("select * from books where id = #{pk}") Book find(@Param("pk") int id); @Select("select * from books order by id desc limit #{size} offset #{start}") List<Book> findAll( @Param("size") int size, @Param("start") int start); @Delete("") void remove(String title); @Update("") void update(Book b); }
cpnfig.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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/Test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <package name="com.zmz.orm"/> </mappers> </configuration>