Eclipse创建Maven-Mybatis项目
1.新建Maven-Mybatis项目
注意config文件为Source Floder
2.pom.xml引入jar包
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.2</version>
</dependency>
3.mybatis.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://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="wsz"/>
<property name="password" value="wsz"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="cn.wsz.mybatis.dao"/>
</mappers>
</configuration>
4.实体类Book以及数据库表
date字段由于与mysql数据库字段不符,没有进行测试。待后续进行。
package cn.wsz.mybatis.domain;
import java.io.Serializable;
import java.util.Date;
import lombok.Getter;
import lombok.Setter;
/**
* Book实体类
* @author wsz
* @date 2017年11月3日14:05:49
*/
public class Book implements Serializable{
private static final long serialVersionUID = 1L;
@Setter
@Getter
private long id;
@Setter
@Getter
private String name;
@Setter
@Getter
private String author;
@Setter
@Getter
private float price;
@Setter
@Getter
private String des;
@Setter
@Getter
private Date date;
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", author=" + author
+ ", price=" + price + ", des=" + des + ", date=" + date + "]";
}
}
5.Mapper接口
package cn.wsz.mybatis.dao;
import java.util.List;
import cn.wsz.mybatis.domain.Book;
public interface BookMapper {
public Book findById(Long id);
public List<Book> findAll();
public List<Book> findByName(String name);
public List<Book> findByAuthor(String author);
public int insertBook(Book book);
public int batchInsert(List<Book> books);
public int updateById(Long id);
public int updateBook(Book book);
public int batchUpdate(String batch);
public int deleteById(Long id);
public int batchDelete(List<Long> id);
}
6.Mapper配置文件
<?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="cn.wsz.mybatis.dao.BookMapper">
<resultMap type="cn.wsz.mybatis.domain.Book" id="BaseResultMap">
<id property ="id" column="id"/>
<result property="name" column="name"/>
<result property="author" column="author"/>
<result property="price" column="price"/>
<result property="des" column="des"/>
<result property="date" column="date"/>
</resultMap>
<parameterMap id="book" type="cn.wsz.mybatis.domain.Book"/>
<sql id="Base_Column">
id,name,author,price,des,date
</sql>
<select id="findAll" resultMap="BaseResultMap">
select <include refid="Base_Column"/>
from book
</select>
<select id="findById" resultMap="BaseResultMap" parameterType="java.lang.Long">
select <include refid="Base_Column"/>
from book
where id = #{id}
</select>
<select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.String">
select <include refid="Base_Column"/>
from book
where name like #{name}
</select>
<select id="findByAuthor" resultMap="BaseResultMap" parameterType="java.lang.String">
select <include refid="Base_Column"/>
from book
where author like #{author}
</select>
<insert id="insertBook" useGeneratedKeys="true" keyProperty="id" parameterType="cn.wsz.mybatis.domain.Book">
insert into book(id,name,author,price,des,date)
values(#{id},#{name},#{author},#{price},#{des},#{date})
</insert>
<insert id="batchInsert">
insert into book(id,name,author,price,des,date)
values
<foreach item="item" index="key" collection="list" open="" separator="," close="">
(#{item.id},#{item.name},#{item.author},#{item.price},#{item.des},#{item.date})
</foreach>
</insert>
<update id="updateById" parameterType="java.lang.Long">
update book
set des = 'aaaaaaaaaaaa'
where id = #{id}
</update>
<update id="updateBook" parameterMap="book">
update book
set name = #{name},author = #{author},price = #{price},des = #{des}
where id = #{id}
</update>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from book
where id = #{id}
</delete>
<delete id="batchDelete">
delete
from book
where id in
<foreach collection="list" item="id" index="key" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
7.测试类
package cn.wsz.mybatis.controller;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
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;
import cn.wsz.mybatis.dao.BookMapper;
import cn.wsz.mybatis.domain.Book;
public class BookController {
public static void main(String[] args) throws IOException {
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = ssf.openSession();
try {
BookMapper mapper = session.getMapper(BookMapper.class);
List<Book> findAll = mapper.findAll();
System.out.println(findAll.size());
Book findById = mapper.findById(1L);
if(null != findById){
System.out.println(findById.toString());
}else{
System.out.println("not find");
}
List<Book> findByName = mapper.findByName("a");
System.out.println(findByName.size());
List<Book> findByAuthor = mapper.findByAuthor("b");
System.out.println(findByAuthor.size());
//单一新增
Book book = new Book();
book.setName("a");
book.setAuthor("a");
book.setPrice(10.0F);
book.setDes("aaaaa");
// book.setDate(new Date());//类型错误暂时无法保存
int insertBook = mapper.insertBook(book);
session.commit();//不提交,无法保存到数据库
System.out.println(insertBook);
//批量新增
List<Book> books = new ArrayList<Book>();
for(int i = 90 ; i > 85 ; i--){
Book b = new Book();
b.setName(String.valueOf(i));
b.setAuthor(String.valueOf(i));
b.setPrice(5F);
b.setDes(String.valueOf(i));
books.add(b);
}
int batchInsert = mapper.batchInsert(books);
session.commit();
System.out.println(batchInsert);
//单一删除
int deleteById = mapper.deleteById(2L);
session.commit();
System.out.println(deleteById);
//批量删除
List<Long> ids = new ArrayList<Long>();
ids.add(1L);
ids.add(2L);
ids.add(3L);
int batchDelete = mapper.batchDelete(ids);
session.commit();
System.out.println(batchDelete);
//单一更新
int updateById = mapper.updateById(16L);
session.commit();
System.out.println(updateById);
//对象更新
Book find = mapper.findById(16L);
find.setName("qqqq");
find.setPrice(80F);
find.setAuthor("qqqq");
find.setDes("qqqqqqqqq");
int updateBook = mapper.updateBook(find);
session.commit();
System.out.println(updateBook);
}finally{
session.close();
}
}
}
8.项目整体结构
需要注意配置文件的读取位置,特别是mapper配置文件中的获取接口位置。
9.源代码
git位置:https://github.com/BeHappyWsz/mybatis.git
http://pan.baidu.com/s/1eS5wJRk