【Mybatis学习】Eclipse创建Maven-Mybatis项目

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值