1.首先导入三个需要用到的JAVA架包
2.添加mybatis配置文件 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>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC"/>
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<!--先写死数据库 -->
<!--不写死是这样
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource> -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 载入实现crud的类Userinfodao.xml -->
<mappers>
<mapper resource="com/baidu/bookstore/mapper/BookMapper.xml"/>
</mappers>
</configuration>
说明:只用修改dataSource 里面的四个属性的value值
<mappers>这里面修改成你实现CRUD方法的那个XML文件的路径,如,你可以看到
BookMappper.xml这个文件放在com/baidu/bookstore/mapper下面
3.创建主类和接口及操作bookinfo表的sql映射文件BookMapper.xml
主类 Book
public class Book implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String bookname;
private String bookid;
private double bookprice;
private double bookprice1;
private String bookimg;
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getBokid() {
return bookid;
}
public void setBokid(String bookid) {
this.bookid = bookid;
}
public double getBookprice() {
return bookprice;
}
public void setBookprice(double bookprice) {
this.bookprice = bookprice;
}
public String getBookimg() {
return bookimg;
}
public void setBookimg(String bookimg) {
this.bookimg = bookimg;
}
public double getBookprice1() {
return bookprice1;
}
public void setBookprice1(double bookprice1) {
this.bookprice1 = bookprice1;
}
}
接口 BookMapper
public interface BookMapper {
//添加
public void saveBook(Book book);
//查询所有
public List<Book> getBooks();
//根据书名模糊查询
public List<Book> getLikeBooks(String bookname);
//按书价格查询书籍
public List<Book> getPriceBooks(Double bookprice, Double bookprice1);
//分页查询
public List<Book> getPageBooks(int page);
}
SQL bookinfo表中的字段如图
定义操作bookinfo表的sql映射文件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.baidu.bookstore.mapper.BookMapper">
<!--插入 -->
<!-- 在各种标签中的id属性必须和接口中的方法名相同 ,
id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,
resultType属性指明查询返回的结果集类型-->
<!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值 -->
<insert id="saveBook" parameterType="Book">
INSERT into Bookinfo(bookid,bookimg,bookname,bookprice)
values(#{bookid},#{bookimg},#{bookname},#{bookprice})
</insert>
<delete id="deleteBook" parameterType="String">
delete from bookinfo where bookid = #{bookid}
</delete>
<!--查询所有 -->
<select id="getBooks" resultType="Book">
select * from bookinfo
</select>
<!--模糊查询 -->
<select id="getLikeBooks" parameterType="String" resultType="Book">
select * from bookinfo where bookname like concat('%',#{bookname},'%')
</select>
<!--按书价格查询 -->
<select id="getPriceBooks" resultType="Book" parameterType="Double">
select * from bookinfo where bookprice >= #{param1} and bookprice <= #{param2}
</select>
<!--分页查询 -->
<select id="getPageBooks" resultType="Book" parameterType="int">
select * from bookinfo limit #{index},3
</select>
</mapper>
4.写工具类 DBTools
public class DBTools {
public static SqlSessionFactory sessionFactory;
static{
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//构建sqlSession的工厂
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
//创建能执行映射文件中sql的sqlSession
public static SqlSession getSession(){
return sessionFactory.openSession();
}
}
5.测试类
public class Main {
public static void main(String[] args) throws IOException {
Book book = null;
List<Book> books = new ArrayList<Book>();
/** 不用工具类则这样
//读取实现连接池与添加方法的配置文件mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//从这个配置里面构建一个工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//从这个构建好的工厂里面生成出sqlSession(封装了JDBC)对象
SqlSession session = sqlSessionFactory.openSession();
**/
SqlSession session = DBTools.getSession();//调用工具类得到 SqlSession
BookMapper bookMapper = (BookMapper)session.getMapper(BookMapper.class);
//查询所有书籍
books = bookMapper.getBooks();
for (Book book1 : books) {
System.out.println("书名:" + book1.getBookname());
//添加书籍
book.setBokid("11");//书ID
book.setBookname("盗墓笔记");//书名
book.setBookimg("book.jpg");//书图片
book.setBookprice(52.0);//书价格
bookMapper.saveBook(book);
session.commit();//提交事务
//按书名查找书籍
books = bookMapper.getLikeBooks("1");
for (Book book2 : books) {
System.out.println("书名" + book2.getBookname());
}
//按价格查找
books = bookMapper.getPriceBooks(10.0, 200.0);
for (Book book2 : books) {
System.out.println("书名" + book2.getBookname());
}
//分页查询
int page = 1;//第一页,三条数据
books = bookMapper.getPageBooks((page-1) * 3);
for (Book book2 : books) {
System.out.println("书名" + book2.getBookname());
}
}
}