MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例

一、理解什么是MyBatis?

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

1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)

2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

3)mybatis与hibernate的对比?

mybatis提供一种“半自动化”的ORM实现。

这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。

而mybatis的着力点,则在于POJO与SQL之间的映射关系。

二、简单例子(快速入门)

1)首先建立项目java web

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_02

2)导入mybatis所需的jar包

java 程序中 获取mybatis执行的sql语句 java调用mybatis_apache_03

mybatis需要jar包:mybatis-3.3.0.jar

mysql驱动jar包:mysql-connector-java-5.1.15.-bin.jar

日志记录jar包:log4j.jar

3)创建数据库数据(mysql)

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_04

4)mysql驱动配置文件(这样可以优化性能)

我个人喜欢把所需要使用到的包先建立好。配置文件先创建好。

java 程序中 获取mybatis执行的sql语句 java调用mybatis_apache_05

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java_06

5)添加mybatis配置文件mybatis.cfg.xml

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例_07

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

1 <?xml version="1.0" encoding="UTF-8"?>
2 
3 
4
5 
6 
7
8 
9 
10 
11 
12 
13
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26
27

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

6)创建对应的实体对象

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_10

对应的java代码:

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例_11

1 package com.cy.mybatis.beans;
2
3 import java.io.Serializable;
4
5 public class UserBean implements Serializable{
6
7 private static final long serialVersionUID = 1L;
8 private Integer id;
9 private String username;
10 private String password;
11 private Double account;
12
13 public UserBean() {
14 super();
15 }
16
17 public UserBean(String username, String password, Double account) {
18 super();
19 this.username = username;
20 this.password = password;
21 this.account = account;
22 }
23
24 public UserBean(Integer id, String username, String password, Double account) {
25 super();
26 this.id = id;
27 this.username = username;
28 this.password = password;
29 this.account = account;
30 }
31
32 public Integer getId() {
33 return id;
34 }
35
36 public void setId(Integer id) {
37 this.id = id;
38 }
39
40 public String getUsername() {
41 return username;
42 }
43
44 public void setUsername(String username) {
45 this.username = username;
46 }
47
48 public String getPassword() {
49 return password;
50 }
51
52 public void setPassword(String password) {
53 this.password = password;
54 }
55
56 public Double getAccount() {
57 return account;
58 }
59
60 public void setAccount(Double account) {
61 this.account = account;
62 }
63
64 @Override
65 public String toString() {
66 return "UserBean [id=" + id + ", username=" + username + ", password="
67 + password + ", account=" + account + "]";
68 }
69
70
71
72
73 }

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

7)创建方法接口UserMapper.java和定义操作t_user表的sql映射文件UserMapper.xml

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例_13

提供简单的增删改查数据信息。

1 package com.cy.mybatis.mapper;
2
3 import java.util.List;
4
5 import com.cy.mybatis.beans.UserBean;
6
7 public interface UserMapper {
8 /**
9 * 新增用戶
10 * @param user
11 * @return
12 * @throws Exception
13 */
14 public int insertUser(UserBean user) throws Exception;
15 /**
16 * 修改用戶
17 * @param user
18 * @param id
19 * @return
20 * @throws Exception
21 */
22 public int updateUser (UserBean user,int id) throws Exception;
23 /**
24 * 刪除用戶
25 * @param id
26 * @return
27 * @throws Exception
28 */
29 public int deleteUser(int id) throws Exception;
30 /**
31 * 根据id查询用户信息
32 * @param id
33 * @return
34 * @throws Exception
35 */
36 public UserBean selectUserById(int id) throws Exception;
37 /**
38 * 查询所有的用户信息
39 * @return
40 * @throws Exception
41 */
42 public List selectAllUser() throws Exception;
43 }

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java_15

UserMapper.xml

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

1 <?xml version="1.0" encoding="UTF-8"?>
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
14 
15 
16
17
18 
19 insert into t_user (username,password,account) values (#{username},#{password},#{account})
20 
21
22 
23 update t_user set username=#{username},password=#{password},account=#{account} where id=#{id}
24 
25
26 
27 delete from t_user where id=#{id}
28 
29
30 
31 select * from t_user where id=#{id}
32 
33
34 
35 select * from t_user
36 
37
38
39

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

这时需要为mybatis.cfg.xml里注册UserMapper.xml文件。

1 <?xml versinotallow="1.0" encoding="UTF-8"?>
2 
3 
4
5 
6 
7
8
9 
10 
11 
13 
14 
15 
16
17
18 
19 
20 
21 
22 
23
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36
37
38 
39 
41 
42 
43 
44

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

8)需要建立一个工具类文件

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例_19

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

1 package com.cy.mybatis.tools;
2
3 import java.io.Reader;
4
5 import org.apache.ibatis.io.Resources;
6 import org.apache.ibatis.session.SqlSession;
7 import org.apache.ibatis.session.SqlSessionFactory;
8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
9
10 public class DBTools {
11 public static SqlSessionFactory sessionFactory;
12
13 static{
14 try {
15 //使用MyBatis提供的Resources类加载mybatis的配置文件
16 Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
17 //构建sqlSession的工厂
18 sessionFactory = new SqlSessionFactoryBuilder().build(reader);
19 } catch (Exception e) {
20 e.printStackTrace();
21 }
22
23 }
24 //创建能执行映射文件中sql的sqlSession
25 public static SqlSession getSession(){
26 return sessionFactory.openSession();
27 }
28
29 }

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

9)写个测试

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_22

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

1 package com.cy.mybatis.service;
2
3 import java.util.List;
4
5 import org.apache.ibatis.session.SqlSession;
6
7 import com.cy.mybatis.beans.UserBean;
8 import com.cy.mybatis.tools.DBTools;
9 import com.cy.mybatis.mapper.UserMapper;
10
11 public class UserService {
12
13
14 15
16 public static void main(String[] args) {
17 insertUser();
18 // deleteUser();
19 // selectUserById();
20 // selectAllUser();
21 }
22
23
24 /**
25 * 新增用户
26 */
27 private static void insertUser() {
28 SqlSession session = DBTools.getSession();
29 UserMapper mapper = session.getMapper(UserMapper.class);
30 UserBean user = new UserBean("懿", "1314520", 7000.0);
31 try {
32 mapper.insertUser(user);
33 System.out.println(user.toString());
34 session.commit();
35 } catch (Exception e) {
36 e.printStackTrace();
37 session.rollback();
38 }
39 }
40
41
42 /**
43 * 删除用户
44 */
45 private static void deleteUser(){
46 SqlSession session=DBTools.getSession();
47 UserMapper mapper=session.getMapper(UserMapper.class);
48 try {
49 mapper.deleteUser(1);
50 session.commit();
51 } catch (Exception e) {
52 e.printStackTrace();
53 session.rollback();
54 }
55 }
56
57
58 /**
59 * 根据id查询用户
60 */
61 private static void selectUserById(){
62 SqlSession session=DBTools.getSession();
63 UserMapper mapper=session.getMapper(UserMapper.class);
64 try {
65 UserBean user= mapper.selectUserById(2);
66 System.out.println(user.toString());
67
68 session.commit();
69 } catch (Exception e) {
70 e.printStackTrace();
71 session.rollback();
72 }
73 }
74
75 /**
76 * 查询所有的用户
77 */
78 private static void selectAllUser(){
79 SqlSession session=DBTools.getSession();
80 UserMapper mapper=session.getMapper(UserMapper.class);
81 try {
82 List user=mapper.selectAllUser();
83 System.out.println(user.toString());
84 session.commit();
85 } catch (Exception e) {
86 e.printStackTrace();
87 session.rollback();
88 }
89 }
90
91
92 }

java 程序中 获取mybatis执行的sql语句 java调用mybatis_xml_08

测试结果

java 程序中 获取mybatis执行的sql语句 java调用mybatis_java mybatis 实例_25

insert。

每件事都需要坚持!