1、什么是MyBatis?

  MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

2、环境准备

 【MyBatis

<!-- mybatis begin -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.3</version>
</dependency>
<!-- mybatis end -->

 【MYSQL驱动包】

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
  • 创建数据库
CREATE DATABASE mybatis_test;
USE mybatis_test;
CREATE TABLE user (
name varchar(50) CHARACTER SET utf8 DEFAULT NULL,
age int(11) DEFAULT NULL,
UNIQUE KEY name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、MyBatis配置使用

  • 新建一个实体类User.java
package cn.jxufe.web.mybatis;

public class User {
private String name;
private Integer age; 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 User(String name, Integer age) {
super();
this.name = name;
this.age = age;
} public User() {
super();
}
}
  • 新建一个映射文件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">
<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 -->
<mapper namespace="cn.jxufe.web.mybatis.UserMapper">
<!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry” -->
<insert id="insertUser" parameterType="User">
insert into user(name,age) values(#{name},#{age})
<!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
</insert>
  <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,
    不能够重复使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 -->
<!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->
<select id="getUser" resultType="User" parameterType="java.lang.String">
select * from user where name=#{name}
</select>
</mapper>
  • 新建一个接口类UserMapper.java
package cn.jxufe.web.mybatis;

public interface UserMapper {
public void insertUser(User user); public User getUser(String name);
}
  • 新建配置文件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>
<settings>
<!-- changes from the defaults for testing -->
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<typeAlias alias="User" type="cn.jxufe.web.mybatis.User"/>
</typeAliases>
<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://127.0.0.1:3306/mybatis_test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册UserMapper.xml文件-->
<mapper resource="mappers/UserMapper.xml" />
</mappers>
</configuration>
  • 新建一个工具类MyBatisUtil.java,用于创建SqlSessionFactory实例,每个数据库对应一个 SqlSessionFactory实例。
package cn.jxufe.web.mybatis;

import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil {
private final static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
System.out.println(e.getMessage()); }
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
  • 测试调用
package cn.jxufe.web.mybatis;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; public class TestMyBatis {
static SqlSessionFactory sqlSessionFactory = null;
static {
sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
} // public static void main(String[] args) {
// testAdd();
// getUser();
// } public static void testAdd() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User("lisi", new Integer(25));
userMapper.insertUser(user);
sqlSession.commit();// 这里一定要提交,不然数据进不去数据库中
} finally {
sqlSession.close();
}
} public static void getUser() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUser("lisi");
System.out.println("name: " + user.getName() + "|age: "
+ user.getAge());
} finally {
sqlSession.close();
}
}
}
  • 工程目录结构

  • 测试结果

  • 源码下载

  GitHub下载

最新文章

  1. github免密码设置
  2. HTML5- Canvas入门(七)
  3. 2016-2017-2《程序设计与数据结构》学生博客&amp;git@OSC
  4. GJM:用C#实现网络爬虫(一) [转载]
  5. WEB核心IOC篇
  6. CUBRID学习笔记 40 使用net修改数据
  7. 自定义获取焦点的TextView
  8. 将python2.7+django1.10部署到SAE上
  9. Text Kit入门
  10. 重新学struct,边界对齐,声明……与Union的区别
  11. 九度 链表中倒数第k个结点
  12. Objective-C 内存管理与高级环境编程 阅读分享
  13. OD: Shellcode Encoding
  14. Eclipse调试Bug的七种常用技巧(转)
  15. tomcat中使用mysql连接池的配置
  16. 【洛谷1131】【ZJOI2007】时态同步
  17. Java开发笔记(六十二)如何定义函数式接口
  18. iView页面Modal中内嵌Tabs,重新显示Modal时默认选中Tabs的第一项
  19. $NOIp2018$劝退记
  20. Chrome 下,重复使用 XMLHttpRequest进行Post数据时,遇到一个奇怪的问题

热门文章

  1. 墨菲定律与 IndexOutOfBoundsException(数组越界异常)
  2. pycharm 不显示代码提示
  3. MyBatis介绍及使用
  4. Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串)
  5. XAF ORMDataModel构建的基础资料对象无法被调用显示的解决办法
  6. ionic3 IPX留海适配
  7. day13--------python 内置函数(一)
  8. XSS攻击的防御
  9. no git binary found in $path(已解决,但是还有疑问)
  10. HDU - 4686 函数积的前缀和