mybatis概述

mybatis简介

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

为什么要使用mybatis。

MyBatis是一个半自动化的持久化层框架。

jdbc编程---当我们使用jdbc持久化的时候,sql语句被硬编码到java代码中。这样耦合度太高。代码不易于维护。在实际项目开发中会经常添加sql或者修改sql,这样我们就只能到java代码中去修改。

Hibernate和JPA。

长难复杂SQL,对于Hibernate而言处理也不容易。

内部自动生产的SQL,不容易做特殊优化。

基于全映射的全自动框架,javaBean存在大量字段时无法只映射部分字段。导致数据库性能下降。

对开发人员而言,核心sql还是需要自己优化

sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。

可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。成为业务代码+底层数据库的媒介

搭建mybatis开发环境

添加mybatis的核心 mybatis-3.2.8.jar

添加mysql数据库连接驱动 mysql-connector-java-5.1.7-bin.

添加log4j日记需要的核心 log4j-1.2.17.jar

在src目录下添加 log4j.properties 日记配置文件

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

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">
<!-- namespace 命名空间(名称空间)类似java类的包名 一般使用对应的类的全类名 或者 类的dao的接口名 -->
<mapper namespace="com.soyoungboy.bean.Book"> <!-- select标签配置一个select查询语句 id属性 给select语句配置一个唯一标识 #{id} 表示一个占位符 resultType
配置查询语句返回的一个对象的全类名 -->
<select id="selectUserById" resultType="com.soyoungboy.bean.Book">
SELECT `id`, `name`,
`author`, `price`, `sales`, `stock`, `img_path` imgPath FROM
`soyoungboy`.`t_book` where id = #{id}
</select> <select id="selectAllBooks" resultType="com.soyoungboy.bean.Book">
SELECT `id`, `name`,
`author`, `price`, `sales`, `stock`, `img_path` imgPath FROM
`soyoungboy`.`t_book`
</select> <insert id="saveBook" resultType="int">
INSERT INTO
`soyoungboy`.`t_book`( `name`, `author`, `price`, `sales`,
`stock`,
`img_path`) VALUES ( #{name}, #{author}, #{price}, #{sales},
#{stock},#{imgPath})
</insert> <delete id="deleteBookById" resultType="int">
DELETE FROM
`soyoungboy`.`t_book`WHERE `id` = #{id}
</delete> <update id="updateBook" resultType="int">
UPDATE `soyoungboy`.`t_book`
SET
`name` = #{name},
`author` = #{author},
`price` = #{price},
`sales` =
#{sales},
`stock` = #{stock},
`img_path` = #{imgPath}
WHERE
`id` = #{id}
</update> </mapper>

mybatis-config.xml里面进行修改

        <mappers>
<mapper resource="BookMapper.xml"/>
</mappers>

我们测试下:

public class BookTest {

    static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
String res = "mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(res);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
System.out.println(sqlSessionFactory);
} @Test
public final void test() {
SqlSession openSession = sqlSessionFactory.openSession();
try {
Book book = openSession.selectOne("com.soyoungboy.bean.Book.selectUserById",30);
System.out.println("book = "+book);
} finally {
openSession.close();
} }
}

MyBatis深入浅出--入门的更多相关文章

  1. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  3. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  4. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  5. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  6. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  7. mybatis快速入门(六)

    前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口 ...

  8. MyBatis学习总结-MyBatis快速入门的系列教程

    MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...

  9. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

随机推荐

  1. java 浅拷贝和深拷贝 对象克隆clone

    分一下几点讨论: 为什么要克隆? 如何实现克隆 浅克隆和深克隆 解决多层克隆问题 总结 一:为什么要克隆? 大家先思考一个问题,为什么需要克隆对象?直接new一个对象不行吗? 答案是:克隆的对象可能包 ...

  2. [转帖]Windows和Linux对决(多进程多线程)

    Windows和Linux对决(多进程多线程) https://blog.csdn.net/world_2015/article/details/44920467 太长了 还没看完.. 还是没太理解好 ...

  3. vue嵌套路由

    父组件  (注:to="/Flow/moban_a"这里不是文件加路径,是父组件路由+子组件路由) 路由配置

  4. js判断一个图片是否已经存在于缓存

    如下代码: var url = "http://......../image.jpg"; var img = new Image(); img.src = url;   if(im ...

  5. Java基础——对象容器(顺序、集合、Hash)

    扩展: For-each循环 for (String s: str) { System.out.println(s); } 等同于for (int i = 0; i < str.length; ...

  6. centos6.8安装JDK

    1.检测当前系统安装jdk信息       rpm -qa | grep jdk 2.如果检查到有安装信息,则用sudo yum remove XXX(XXX代表上面查到的结果) 3.下载rpm包,安 ...

  7. Java开发之@PostConstruct执行顺序

    构造函数==>postConstruct==>init==destory==>predestory==卸载servlet;; 从Java EE5规范开始,Servlet增加了两个影响 ...

  8. C-LODOP设置同一页面 手机电脑都打印

    C-Lodop有四种角色,1:客户端本地打印方式客户端访问web,调用客户端本地的打印机进行打印,这时候调用的安装在客户端本地的c-lodop服务,实际调用的是http://Localhost:800 ...

  9. linode上切换Linux到FreeBSD

    PS:不是真正的无缝切换,数据需要自己备份.还原. Linode官方给出了一篇文章:https://www.linode.com/docs/tools-reference/custom-kernels ...

  10. luogu3702-[SDOI2017]序列计数

    Description Alice想要得到一个长度为nn的序列,序列中的数都是不超过mm的正整数,而且这nn个数的和是pp的倍数. Alice还希望,这nn个数中,至少有一个数是质数. Alice想知 ...