• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

MyBatis入门

技术杂谈 勤劳的小蚂蚁 4个月前 (12-29) 71次浏览 已收录 0个评论 扫描二维码

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

一、理解什么是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

  

2)导入mybatis所需的jar包


mybatis需要jar包:mybatis-3.3.0.jar

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

日志记录jar包:log4j.jar

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

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

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


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

1 <?xml version=“1.0” encoding=“UTF-8”?>
2 <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd”&gt;
3 <configuration>
4
5   <!– 引入外部配置文件 –>
6   <propertiesresource=“mysql.properties”></properties>
7    
8    <!– 配置mybatis运行环境 –>
9      <environmentsdefault=“cybatis”>
10         <environmentid=“cybatis”>
11             <!– type=”JDBC” 代表使用JDBC的提交和回滚来管理事务 –>
12             <transactionManagertype=“JDBC” />
13            
14             <!– mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI –>
15             <!– POOLED 表示支持JDBC数据源连接池 –>
16             <!– UNPOOLED 表示不支持数据源连接池 –>
17             <!– JNDI 表示支持外部数据源连接池 –>
18             <dataSourcetype=“POOLED”>
19                 <propertyname=“driver”value=“${jdbc.driver}” />
20                 <propertyname=“url”value=“${jdbc.url}” />
21                 <propertyname=“username”value=“${jdbc.username}” />
22                 <propertyname=“password”value=“${jdbc.password}” />
23             </dataSource>
24         </environment>
25     </environments>
26    
27 </configuration>

6)创建对应的实体对象


对应的java代码:

1package com.cy.mybatis.beans;
2
3import java.io.Serializable;
4
5publicclassUserBeanimplementsSerializable{
6
7     privatestaticfinallong serialVersionUID = 1L;
8     private Integer id;
9     private String username;
10     private String password;
11     private Double account;
12    
13     publicUserBean(){
14         super();
15     }
16    
17     publicUserBean(String username, String password, Double account){
18         super();
19         this.username = username;
20         this.password = password;
21         this.account = account;
22     }
23
24     publicUserBean(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     publicvoidsetId(Integer id){
37         this.id = id;
38     }
39
40     public String getUsername(){
41         return username;
42     }
43
44     publicvoidsetUsername(String username){
45         this.username = username;
46     }
47
48     public String getPassword(){
49         return password;
50     }
51
52     publicvoidsetPassword(String password){
53         this.password = password;
54     }
55
56     public Double getAccount(){
57         return account;
58     }
59
60     publicvoidsetAccount(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 }

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


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

1package com.cy.mybatis.mapper;
2
3import java.util.List;
4
5import com.cy.mybatis.beans.UserBean;
6
7publicinterfaceUserMapper{
8     /**
9      * 新增用戶
10      * @param user
11      * @return
12      * @throws Exception
13      */
14     publicintinsertUser(UserBean user)throws Exception;
15     /**
16      * 修改用戶
17      * @param user
18      * @param id
19      * @return
20      * @throws Exception
21      */
22     publicintupdateUser(UserBean user,int id)throws Exception;
23      /**
24       * 刪除用戶
25       * @param id
26       * @return
27       * @throws Exception
28       */
29     publicintdeleteUser(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<UserBean> selectAllUser()throws Exception;
43 }


UserMapper.xml

1 <?xml version=“1.0” encoding=“UTF-8”?>
2 <!DOCTYPE mapper PUBLIC “-//mybatis.org/DTD Mapper 3.0” “http://mybatis.org/dtd/mybatis-3-mapper.dtd”&gt;
3 <mappernamespace=“com.cy.mybatis.mapper.UserMapper”>
4 <!– 自定义返回结果集 –>
5    <resultMapid=“userMap”type=“UserBean”>
6         <idproperty=“id”column=“id”javaType=“java.lang.Integer”></id>
7         <resultproperty=“username”column=“username”javaType=“java.lang.String”></result>
8         <resultproperty=“password”column=“password”javaType=“java.lang.String”></result>
9         <resultproperty=“account”column=“account”javaType=“java.lang.Double”></result>
10     </resultMap>
11 <!– 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型–>    
12 <!– useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys
13             方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 –>    
14 <!–keyProperty: (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 –>
15 <!–#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值  –>
16
17
18     <insertid=“insertUser”useGeneratedKeys=“true”keyProperty=“id”>
19         insert into t_user (username,password,account) values (#{username},#{password},#{account})
20     </insert>
21    
22     <updateid=“updateUser” >
23       update t_user set username=#{username},password=#{password},account=#{account} where id=#{id}
24     </update>
25    
26     <deleteid=“deleteUser”parameterType=“int”>
27      delete from t_user where id=#{id}  
28     </delete>
29    
30     <selectid=“selectUserById”parameterType=“int”resultMap=“userMap”>
31      select * from t_user where id=#{id}
32     </select>
33    
34     <selectid=“selectAllUser”resultMap=“userMap”>
35      select * from t_user
36     </select>
37    
38    
39 </mapper>

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

1 <?xml version=“1.0” encoding=“UTF-8”?>
2 <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd”&gt;
3 <configuration>
4
5   <!– 引入外部配置文件 –>
6   <propertiesresource=“mysql.properties”></properties>
7  
8  
9    <!– 为JAVA Bean起类别名 –>
10    <typeAliases >
11         <!– 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名
12         <typeAliase type=”com.cy.mybatis.beans.UserBean” alias=”UserBean”/> –>
13         <!– 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 –>
14         <packagename=“com.cy.mybatis.beans”/>
15    </typeAliases>
16    
17    
18    <!– 配置mybatis运行环境 –>
19      <environmentsdefault=“cybatis”>
20         <environmentid=“cybatis”>
21             <!– type=”JDBC” 代表使用JDBC的提交和回滚来管理事务 –>
22             <transactionManagertype=“JDBC” />
23            
24             <!– mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI –>
25             <!– POOLED 表示支持JDBC数据源连接池 –>
26             <!– UNPOOLED 表示不支持数据源连接池 –>
27             <!– JNDI 表示支持外部数据源连接池 –>
28             <dataSourcetype=“POOLED”>
29                 <propertyname=“driver”value=“${jdbc.driver}” />
30                 <propertyname=“url”value=“${jdbc.url}” />
31                 <propertyname=“username”value=“${jdbc.username}” />
32                 <propertyname=“password”value=“${jdbc.password}” />
33             </dataSource>
34         </environment>
35     </environments>
36    
37    
38     <mappers>
39         <!– 告知映射文件方式1,一个一个的配置
40         <mapper resource=”com/cy/mybatis/mapper/UserMapper.xml”/>–>
41         <!– 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 –>
42         <packagename=“com/cy/mybatis/mapper”/>
43     </mappers>
44 </configuration>

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


1package com.cy.mybatis.tools;
2
3import java.io.Reader;
4
5import org.apache.ibatis.io.Resources;
6import org.apache.ibatis.session.SqlSession;
7import org.apache.ibatis.session.SqlSessionFactory;
8import org.apache.ibatis.session.SqlSessionFactoryBuilder;
9
10publicclassDBTools{
11     publicstatic 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     publicstatic SqlSession getSession(){
26         return sessionFactory.openSession();
27     }
28    
29 }

9)写个测试


1 package com.cy.mybatis.service;
2
3import java.util.List;
4
5import org.apache.ibatis.session.SqlSession;
6
7import com.cy.mybatis.beans.UserBean;
8import com.cy.mybatis.tools.DBTools;
9import com.cy.mybatis.mapper.UserMapper;
10
11publicclassUserService {
12
13    
1415      
16     publicstaticvoidmain(String[] args){
17           insertUser();
18//        deleteUser();
19//        selectUserById();
20//        selectAllUser();
21     }
22
23    
24     /**
25      * 新增用户
26      */
27     privatestaticvoidinsertUser(){
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     privatestaticvoiddeleteUser(){
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     privatestaticvoidselectUserById(){
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     privatestaticvoidselectAllUser(){
79         SqlSession session=DBTools.getSession();
80         UserMapper mapper=session.getMapper(UserMapper.class);
81         try {
82         List<UserBean> 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 }

测试结果:

insert。


    丨极客文库, 版权所有丨如未注明 , 均为原创丨
    本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
    转载请注明原文链接:MyBatis入门
    喜欢 (0)
    [247507792@qq.com]
    分享 (0)
    勤劳的小蚂蚁
    关于作者:
    温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

    您必须 登录 才能发表评论!

    • 精品技术教程
    • 编程资源分享
    • 问答交流社区
    • 极客文库知识库

    客服QQ


    QQ:2248886839


    工作时间:09:00-23:00