Mybatis入门(一)

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&amp;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 &gt;= #{param1} and bookprice &lt;= #{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());
				}
		 
		}	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值