什么是MyBatis

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索。

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

ibatis=mybatis

和Hibernate对比

aaarticlea/png;base64,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" alt="" />

搭建MyBatis开发环境的步骤

搭建MyBatis环境时,我们一般需要做以下几个步骤的工作:

1》创建java工程

2》找到开发MyBatis应用需要使用到的jar文件.

3》创建数据库表.

4》创建pojo文件.

5》创建针对表操作的xml文件

6》创建MyBatis的xml配置文件

7》编写测试类

1、创建java工程

2、导入java包

核心包

mybatis-3.1.1.jar

依赖包

asm-3.3.1.jar

cglib-2.2.2.jar

commons-logging-1.1.1.jar

log4j-1.2.16.jar

slf4j-api-1.6.2.jar

slf4j-log4j12-1.6.2.jar

数据库驱动包

mysql-connector-java-5.0.6-bin.jar

测试包

junit-4.4.jar

3、创建数据库表

创建数据库:

 create database mybatis;

 use mybatis;

创建表:

 create table user(id int primary key not  null  auto_increment,name  varchar(50),age  int,address varchar(150));

 desc user;

插入一条记录:

  insert user values(‘1001’,’zhangsan’,25,’beijing’)

4.创建pojo

 public class User {
private Integer id;
private String name;
private Integer age;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age
+ ", address=" + address + "]";
}
}

5.创建针对表操作的xml文件UserMapper.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:必需保证唯一,一般是当前文件的全名 -->
<mapper namespace="cn.itcast.dao.UserMapper"> <!-- <select>:查询时使用
id:相当 于方法名,在同一文件中不能有相同的id名
parameterType:指定方法传入的参数类型,integer=java.lang.Integer
resultType:指定方法的返回类型
-->
<select id="loadUserById" parameterType="integer" resultType="cn.itcast.pojo.User">
select * from user where id=#{id}
</select> <!-- <insert>:插入记录
#{id}:=getId()
-->
<insert id="insertUser" parameterType="cn.itcast.pojo.User" >
insert into user values(#{id},#{name},#{age},#{address})
</insert> <!-- <update>:更新记录-->
<update id="updataUser" parameterType="cn.itcast.pojo.User">
update user set name=#{name},age=#{age},address=#{address} where id=#{id}
</update> <delete id="deleteUser" parameterType="integer">
delete from user where id=#{id}
</delete>
<!-- ==================================================================== -->
<!-- 动态SQL 查询 -->
<select id="findUser" parameterType="cn.itcast.pojo.User" resultType="cn.itcast.pojo.User">
select * from user
<where>
<if test="name != null">
name like '%${name}%'
</if>
<if test="age !=null">
and age=#{age}
</if>
<if test="address != null">
and address like '%${address}%'
</if>
</where> </select> <!-- 公共查询条件 -->
<sql id="query_where">
<where>
<if test="name != null">
name like '%${name}%'
</if>
<if test="age !=null">
and age=#{age}
</if>
<if test="address != null">
and address like '%${address}%'
</if>
</where>
</sql> <select id="countUser" parameterType="cn.itcast.pojo.User" resultType="int">
select count(*) from user
<include refid="query_where"></include> </select> <!-- 动态更新 -->
<update id="updateUser2" parameterType="cn.itcast.pojo.User">
update user
<set>
<if test="name != null">name=#{name},</if>
<if test="age != null">age=#{age},</if>
<if test="address != null">address=#{address}</if>
</set> where id=#{id}
</update> <sql id="update_set">
<set>
<if test="name != null">name=#{name},</if>
<if test="age != null">age=#{age},</if>
<if test="address != null">address=#{address}</if>
</set>
</sql> <!-- 动态更新 .公共条件-->
<update id="updateUser3" parameterType="cn.itcast.pojo.User">
update user
<include refid="update_set"/> where id=#{id}
</update> </mapper>

6.创建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> <!-- <environments>:它里边能指定多个数据库配置 default:默认加载的数据库配置 -->
<environments default="dev">
<!--
<environment>:相应数据库配置
id:在当前配置文件中必需保证唯一
-->
<environment id="dev">
<!-- <transactionManager>:指定数据库事务的管理,一般由jdbc管理 -->
<transactionManager type="jdbc"></transactionManager>
<!-- <dataSource>:指定数据库相关连接-->
<dataSource type="pooled">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis1023" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> <!-- <mappers>:配置所有的表的配置文件 -->
<mappers>
<!--
<mapper>:引入相关表的配置文件
resource:指定表配置文件的所在位置
-->
<mapper resource="cn/itcast/dao/UserMapper.xml"/>
</mappers>
</configuration>

7.编写测试类TestUser.java

 public class TestUser {

     private SqlSession sqlSession = null;
@Before
public void init(){
try {
// 读取mybatis配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 获取SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(reader); //获取SqlSession
sqlSession = sessionFactory.openSession(); } catch (IOException e) {
e.printStackTrace();
} } @Test
/**
* 更新一条数据
*/
public void testUpdataUser(){
User user = new User();
user.setId(1);
user.setName("wang");
user.setAge(23);
user.setAddress("shanghai");
int i = sqlSession.update("cn.itcast.dao.UserMapper.updataUser",user);
System.out.println(i);
sqlSession.commit(); } @Test
/**
* 插入一条数据
*/
public void testInserUser(){
User user = new User();
user.setId(1);
user.setName("wangwu");
user.setAge(23);
user.setAddress("tianjin");
int i = sqlSession.insert("cn.itcast.dao.UserMapper.insertUser",user);
System.out.println(i);
sqlSession.commit(); }
@Test
/**
* 根据ID查询
*/
public void testLoadUserById() {
// 通过id查询user
User user = sqlSession.selectOne(
"cn.itcast.dao.UserMapper.loadUserById", 1);
System.out.println(user.toString()); } @Test
/**
* 根据ID删除一条数据
*/
public void testDeleteUserById() {
// 通过id查询user
int i = sqlSession.delete(
"cn.itcast.dao.UserMapper.deleteUser", 1);
System.out.println(i);
sqlSession.commit(); } @Test
/**
* 动态查询
*/
public void findUser(){ User u = new User();
//u.setName("zhao");
u.setName("wang");
List<User> list = sqlSession.selectList("cn.itcast.dao.UserMapper.findUser", u);
for (User user : list) {
System.out.println(user.toString());
}
} @Test
/**
* 动态查询.公共条件查询
*/
public void countUser(){ User u = new User();
//u.setName("zhao");
u.setAge(23);
int i = sqlSession.selectOne("cn.itcast.dao.UserMapper.countUser", u);
System.out.println(i);
} /**
* 动态更新
*/
@Test
public void updateUser2(){
User user = new User();
user.setId(1);
//user.setName("zhaowu2");
user.setAge(26);
//user.setAddress("henan");
int i = sqlSession.update("cn.itcast.dao.UserMapper.updateUser2", user);
System.out.println(i);
sqlSession.commit();
} /**
* 动态更新
*/
@Test
public void updateUser3(){
User user = new User();
user.setId(1);
//user.setName("zhaowu2");
user.setAge(18);
//user.setAddress("henan");
int i = sqlSession.update("cn.itcast.dao.UserMapper.updateUser3", user);
System.out.println(i);
sqlSession.commit();
} }

总结:

1   parameterType

在映射文件中通过parameterType指定输入 参数的类型。

2     resultType

在映射文件中通过resultType指定输出结果的类型。

3     #{}和${}

#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。

如果接收简单类型,#{}中可以写成value或其它名称。

#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。

${}接收输入参数,类型可以是简单类型,pojo、hashmap。

如果接收简单类型,${}中只能写成value。

${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

4     selectOne和selectList

selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。

selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。

如果使用selectOne报错:

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4

2     mybatis和hibernate本质区别和应用场景

hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。

对sql语句进行优化、修改比较困难的。

应用场景:

适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。。

mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全 的ORM框架,虽然程序员自己写sql,mybatis 也可以实现映射(输入映射、输出映射)。

应用场景:

适用与需求变化较多的项目,比如:互联网项目。

企业进行技术选型,以低成本 高回报作为技术选型的原则,根据项目组的技术力量进行选择。

一 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快速入门的系列教程

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

  8. MyBatis学习笔记(一)——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  9. Java基础-SSM之mybatis快速入门篇

    Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...

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

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

随机推荐

  1. 网页制作技巧:iframe自适应高度

    转自:http://www.enet.com.cn/article/2012/0620/A20120620126237.shtml 通过Google搜索iframe 自适应高度,结果5W多条,搜索if ...

  2. 【现代程序设计】homework-04

    题目要求: 第四次作业,构造一个方阵将指定单词填入 stage 1:每个单词只出现1次,且八个方向各至少有两个单词 stage 2:矩阵长宽相等 stage 3:方阵的四个角都要参与单词的构建 算法思 ...

  3. android操作XML的几种方式(转)

    XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现.其标准型,可靠性,安全性......毋庸置疑.在android平台上,我们要想实现数据存储和数据交换,经常会使用到xml ...

  4. P/Invoke .NET调用win32API

    项目:无线无源测温软件系统 项目中,用到使用P/Invoke在.NET调用win32API,实现对ini配置文件的读写功能!因为有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一 ...

  5. 【转】kylin优化

    转自: http://www.bitstech.net/2016/01/04/kylin-olap/ http://www.csdn.net/article/2015-11-27/2826343 ht ...

  6. n个元素进栈,共有多少种出栈顺序?

    1.基于栈的问题分析 我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出:                                   f(1) = 1     / ...

  7. 亲和数[HDU2040]

    亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  8. BZOJ1845 : [Cqoi2005] 三角形面积并

    求出所有交点后从左往右扫描线,用每段的中位线去截所有三角形,算出长度并后乘以该段长度即可,时间复杂度$O(n^3\log n)$. #include<cstdio> #include< ...

  9. 【BZOJ】1090: [SCOI2003]字符串折叠(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1090 随便yy一下.. 设f[i,j]表示i-j的最小长度 f[i, j]=min{j-i+1, f ...

  10. 关于APP自动化工程的一点小想法

    首先谈一下APP自动化测试面临的一些局限性? 答:测试业务的不明确性,APP逻辑复杂,界面的跳转变化随时间变化. 测试本身的不确定性,如不定时弹窗问题. 测试环境不稳定性,主要是网络的稳定性. 测试接 ...