Mybatis入门demo

最近参考其他大佬的博客整理了一个mybatis的入门小demo,话不多说,开始吧!

一、首先是Mybatis的介绍

  (1)Mybatis是一款优秀的持久层框架。它支持定制SQL、存储过程及高级映射。通过映射的方式,灵活生成(半自动化,大部分需要程序员编写sql)满足需要的sql语句。

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

  (3)Mybatis可以使用简单的xml或注解来配置和映射原生信息,将接口和java的实体类映射成数据库中的记录。

二、Mybatis的执行流程

 

三、Mybatis开发步骤

1、新建web项目

2、导入所需要的jar包

3、创建数据库

4、建立所需要的包:bean、mapper、service、tools、mybatis

5、根据数据库中的表创建实体类

6、在mybatis包下新建mybatis的配置文件,并在其中配置相关信息

7、在mapper包下创建方法接口和对应的xml文件

8、在mybatis的配置文件中加入新建的映射xml文件信息(如果是一个一个配置的话需要写该步骤,如果配置的是整个包,就不需要该步骤,只配置一次即可)

9、在tools包中新建一个工具类,并配置SqlSession等

10、在service包下根据mapper包下的接口类新建一个测试类,写业务逻辑。

四、使用Mybatis开发的具体步骤

1、新建web项目,我的项目名称为mybatis_test

 

2、导入所需要的jar包

 

3、创建数据库

数据库的名称为mybatis_test,表名为user,结构如下:

4、建立所需要的包:bean、mapper、service、tools、mybatis

5、根据数据库中的表在bean包中创建实体类 :UserBean

 1 package bean;
 2 
 3 public class UserBean {
 4     private int id;
 5     private String username;
 6     private String password;
 7     public int getId() {
 8         return id;
 9     }
10     public void setId(int id) {
11         this.id = id;
12     }
13     public String getUsername() {
14         return username;
15     }
16     public void setUsername(String username) {
17         this.username = username;
18     }
19     public String getPassword() {
20         return password;
21     }
22     public void setPassword(String password) {
23         this.password = password;
24     }
25     @Override
26     public String toString() {
27         return "UserBean [id=" + id + ", username=" + username + ", password=" + password + "]";
28     }
29     public UserBean(int id, String username, String password) {
30         super();
31         this.id = id;
32         this.username = username;
33         this.password = password;
34     }
35     public UserBean() {
36         super();
37     }
38     public UserBean(String username, String password) {
39         super();
40         this.username = username;
41         this.password = password;
42     }
43     
44 
45 }

6、在mybatis包下新建mybatis的配置文件,我的取名为mybatis,并在其中配置相关信息

<?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>
    <typeAliases>
        <typeAlias type="bean.UserBean" alias="UserBean" />
        <!--或者使用以下的方式设置别名 <package name="bean" /> -->
    </typeAliases>
    <!--配置mybatis的运行环境 -->
    <environments default="cybatis">
        <environment id="cybatis">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
    <!--配置方式也可一个一个配置,也可直接配置包
    <mapper resource="mapper/UserMapper.xml"/>-->
        <package name="mapper" />
    </mappers>
</configuration>

7、在mapper包下创建方法接口Usesbean和对应的xml文件

UserMapper.java中的代码:

 1 package mapper;
 2 
 3 import java.util.List;
 4 
 5 import bean.UserBean;
 6 
 7 public interface UserMapper {
 8     /**
 9      * description select all users
10      */
11     public List<UserBean> selectAllUser();
12 
13     /**
14      * description insert
15      */
16 
17     public int insertUser(UserBean userbean);
18 
19     /**
20      * description delete user by id
21      * 
22      */
23     public int deleteUserById(int id);
24 
25     /**
26      * description update user
27      * 
28      */
29     public int updateUser(UserBean userbean);
30 
31     /**
32      * description select user by id
33      * 
34      */
35     public UserBean selectUserById(int id);
36     
37 }

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">
 3 <mapper namespace="mapper.UserMapper">
 4     <resultMap id="usermap" type="UserBean">
 5         <id property="id" column="id" javaType="java.lang.Integer" />
 6         <result property="username" column="username" javaType="java.lang.String" />
 7         <result property="password" column="password" javaType="java.lang.String" />
 8     </resultMap>
 9     <select id="selectAllUser" resultMap="usermap">
10         select * from user
11     </select>
12     <insert id="insertUser">
13         insert into user(username,password)values(#{username},#{password})
14     </insert>
15     <delete id="deleteUserById">
16         delete from user where id=#{id}
17     </delete>
18     <update id="updateUser">
19     update user set username=#{username},password=#{password} where id=#{id}
20     </update>
21     <select id="selectUserById" resultMap="usermap">
22     select * from user where id=#{id}
23     </select>
24 </mapper>

8、在mybatis的配置文件中加入新建的映射xml文件信息(如果是一个一个配置的话需要写该步骤,如果配置的是整个包,就不需要该步骤,只配置一次即可),在这里我配置的是整个包,所有该步骤忽略。

9、在tools包中新建一个工具类,并配置SqlSession等

 1 package tools;
 2 
 3 import java.io.IOException;
 4 import java.io.Reader;
 5 
 6 import javax.annotation.Resource;
 7 
 8 import org.apache.ibatis.io.Resources;
 9 import org.apache.ibatis.session.SqlSession;
10 import org.apache.ibatis.session.SqlSessionFactory;
11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
12 
13 public class DB {
14     public static SqlSessionFactory sf;
15     static{
16         Reader reader;
17         try {
18             reader=Resources.getResourceAsReader("mybatis/mybatis.xml");
19             sf=new SqlSessionFactoryBuilder().build(reader);
20         } catch (IOException e) {
21             e.printStackTrace();
22         }
23     }
24     public static SqlSession getSession(){
25         return sf.openSession();
26         
27     }
28 
29 }

10、在service包下根据mapper包下的接口类新建一个测试类,写业务逻辑。

  

1 package service;
2 3 import java.util.List; 4 5 import org.apache.ibatis.session.SqlSession; 6 7 import bean.UserBean; 8 import mapper.UserMapper; 9 import tools.DB; 10 11 public class UserService { 12 public static void main(String[] args) {
      //根据情况将某个方法放开注释或加上注释
13 selectAllUser(); 14 // insertUser(); 15 // deleteUserById(); 16 // updateUser(); 17 } 18 19 private static void selectAllUser() { 20 SqlSession session = DB.getSession(); 21 UserMapper mapper = session.getMapper(UserMapper.class); 22 try { 23 List<UserBean> user = mapper.selectAllUser(); 24 System.out.println(user.toString()); 25 session.commit(); 26 27 } catch (Exception e) { 28 e.printStackTrace(); 29 session.rollback(); 30 } 31 } 32 33 private void insertUser() { 34 SqlSession session = DB.getSession(); 35 UserMapper mapper = session.getMapper(UserMapper.class); 36 try { 37 UserBean userbean = new UserBean("zs", "123"); 38 mapper.insertUser(userbean); 39 System.out.println(userbean.toString()); 40 session.commit(); 41 } catch (Exception e) { 42 e.printStackTrace(); 43 session.rollback(); 44 } 45 46 } 47 48 private static void deleteUserById() { 49 SqlSession session = DB.getSession(); 50 UserMapper mapper = session.getMapper(UserMapper.class); 51 try { 52 mapper.deleteUserById(3); 53 System.out.println("删除成功"); 54 session.commit(); 55 } catch (Exception e) { 56 e.printStackTrace(); 57 session.rollback(); 58 } 59 } 60 61 private static void updateUser() { 62 SqlSession session = DB.getSession(); 63 UserMapper mapper = session.getMapper(UserMapper.class); 64 UserBean userbean = mapper.selectUserById(4); 65 System.out.println("修改之前的userbean:" + userbean); 66 try { 67 userbean.setUsername("hhh"); 68 userbean.setPassword("111"); 69 mapper.updateUser(userbean); 70 System.out.println("修改之后的userbean:" + userbean); 71 session.commit(); 72 } catch (Exception e) { 73 e.printStackTrace(); 74 session.rollback(); 75 } 76 77 } 78 }

若UserService中的main方法中未加注释的方法是selectAllUser的方法,运行该main方法,查询到的结果为:

好啦,以上就是全部的demo内容,本人小白,有什么错误或者不规范的地方请各位大佬提出意见或者建议~~

posted @ 2019-02-26 10:38  xixi1230  阅读(398)  评论(0编辑  收藏  举报