Mybatis详细的简单案例能运行成功的

2021-05-25 16:35发布

5条回答

开发步骤:

1.创建java工程

2.加入jar包(依赖包、驱动包)

3.创建sqlMapConfig.xml

4.创建数据库,数据库表USER_C,插入测试记录

5.创建PO对象 user.java

6.创建映射文件 User.xml

7.创建测试类

占位符:

iBatis  #id#

myBatis  #{id}

1、创建web工程

2、导入jar包:

mybatis-3.2.2.jar

 

asm-3.3.1.jar

cglib-2.2.2.jar

commons-logging-1.1.1.jar

javassist-3.17.1-GA.jar

log4j-1.2.17.jar

slf4j-api-1.7.5.jar

slf4j-log4j12-1.7.5.jar

 

3、配置文件 sqlMapConfig.xml :

事务:JDBC/MANAGED

数据源:UNPOOLED/POOLED/JNDI

复制代码

复制代码

 1 
 2 
 5 
 6     
 7         
 8             
 9             
10                 
11                 
12                 
13                 
14             
15         
16     
17 
18     
19         
20     
21 

复制代码

复制代码

4.创建数据库

创建mybatisdb数据库

创建User表

 

create table USER_C

(

   ID                   varchar(40) not null,

   NAME                 varchar(30),

   AGE                  int,

   ADDRESS              varchar(200),

   primary key (ID)

);

insert  into `user_c`(`id`,`name`,`age`,`address`)

values ('1','夏言',73,'桂州村'),

('2','严嵩',87,'分宜县城介桥村'),

('3','徐阶',80,'明松江府华亭县'),

('4','高拱',66,'河南省新郑市高老庄村'),

('5','张居正',58,'江陵');

5、映射文件 cn.itcast.mybatis.domain.User.xml :

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

6、PO对象 User.java :

复制代码

复制代码

 1 package cn.itcast.domain;
 2 
 3 public class User {
 4     private String id;
 5     private String name;
 6     private Integer age;
 7     private String address;
 8     public String getAddress() {
 9         return address;
10     }
11     public void setAddress(String address) {
12         this.address = address;
13     }
14     public String getId() {
15         return id;
16     }
17     public void setId(String id) {
18         this.id = id;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public Integer getAge() {
27         return age;
28     }
29     public void setAge(Integer age) {
30         this.age = age;
31     }
32     @Override
33     public String toString() {
34         return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
35     }
36     
37 }

复制代码

复制代码

7、测试类:

复制代码

复制代码

 1 package cn.itcast.test;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6 import java.util.UUID;
 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 import org.junit.Before;
13 import org.junit.Test;
14 
15 import cn.itcast.domain.User;
16 
17 public class TestMybatis {
18 
19     SqlSessionFactory sqlSessionFactory;
20     
21     @Before
22     public void initFactory() throws IOException
23     {
24         String resource = "sqlMapConfig.xml";
25 
26         InputStream inputStream = Resources.getResourceAsStream(resource);
27 
28         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
29     }
30     
31     @Test
32     public  void testListAll()
33     {
34         SqlSession session=sqlSessionFactory.openSession();
35         List users=session.selectList("cn.itcast.mybatis.listAll");
36         System.out.println(users.size());
37     }
38     @Test
39     public void testQueryOne()
40     {
41         SqlSession session=sqlSessionFactory.openSession();
42         User user=session.selectOne("cn.itcast.mybatis.getOne", 1);
43         System.out.println(user);
44     }
45     //事务需要程序员处理
46     @Test
47     public void testInsertOne()
48     {
49         User u=new User();
50         u.setId(UUID.randomUUID().toString());
51         u.setName("sbsbb");
52         u.setAge(18);
53         u.setAddress("china");
54         SqlSession session=sqlSessionFactory.openSession();
55         int count=session.insert("cn.itcast.mybatis.insertOne", u);
56         session.commit();
57         System.out.println(count);
58     }
59     
60     @Test
61     public void testUpdateOne()
62     {
63         SqlSession session=sqlSessionFactory.openSession();
64         User u=new User();
65         //u=session.selectOne("cn.itcast.mybatis.getOne", "2");
66         u.setId("2");
67         u.setName("clclclclclcfei");
68         u.setAge(100);
69         u.setAddress("USA");
70         int count=session.update("cn.itcast.mybatis.updateOne", u);
71         session.commit();
72         System.out.println(count);
73     }
74     @Test
75     public void testDeleteOne()
76     {
77         SqlSession session=sqlSessionFactory.openSession();
78         User u=new User();
79         u.setId("2");
80         int count=session.delete("cn.itcast.mybatis.deleteOne", u);
81         session.commit();
82         System.out.println(count);
83     }
84     
85     
86     
87 }

复制代码

复制代码


小橘子
3楼 · 2021-05-26 11:54

1. 导依赖


  junit

  junit

  4.11

  test


  org.mybatis

  mybatis

  3.4.5


  mysql

  mysql-connector-java

  5.1.6


2. 配置文件 mybaits.xml 和创建表




        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

        "http://mybatis.org/dtd/mybatis-3-config.dtd">

   

   

       

           

           

           

           

               

               

               

               

           

       

   

   

   

       

   


3. 定义bean


public class User {

    private String name;

    private int age;

    public User() {

    }

    public User(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    @Override

    public String toString() {

        return "User{" +

                "name='" + name + '\'' +

                ", age=" + age +

                '}';

    }

}


4. 写接口


package wpj.dao;


import wpj.bean.*;

import java.util.*;


public interface IUserDao {

    List selectAllUser();

}


5. 写对应接口的xml文件 IUserDao.xml


        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

   


6. Test


public class MyBatisTest {


    @Test

    public void testAllUser() throws IOException {

        String resource = "mybatis-config.xml";

        InputStream inputStream = Resources.getResourceAsStream(resource);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2 获取sqlSession实例,能直接执行已经映射的sql语句

        SqlSession openSession = sqlSessionFactory.openSession();

        try {

            //sql唯一标识,sql要用的参数

            List userList = openSession.selectList("wpj.dao.IUserDao.selectAllUser");

            for(User user : userList) {

                System.out.println(user);

            }

        } finally {

            openSession.close();

        }

    }

}

visonx
4楼 · 2021-06-03 11:41

开发步骤:

1.创建java工程

2.加入jar包(依赖包、驱动包)

3.创建sqlMapConfig.xml

4.创建数据库,数据库表USER_C,插入测试记录

5.创建PO对象 user.java

6.创建映射文件 User.xml

7.创建测试类


爱学习的小巴
5楼 · 2021-06-07 09:43

先建立一些必要的文件夹,其中base文件是存放一些公共常用到的接口/类等,controller文件夹主要用来存放controller类,dao文件夹主要用来存放dao文件(包括dao层的xml文件的dao接口),model主要是用来存放一些实体类,service文件夹用来存放service层类,utils文件夹用来存放工具类;当然这些文件夹可以视情况而建。在webapp下新建一个testPages文件夹,用于存放我们的测试页面文件。



zgzbs
6楼 · 2021-08-19 09:28

案例
我们删除一条数据成功的话,那么返回的就是1,表示影响了一行,如果没有删除任何的数据,那么返回值就是0
1.

insert into student(name,age) values(#{name},#{age})

2. 接口
// 增加新学生并返回id返回result
public int insertStudent(Student student);
3. 实现接口
public int insertStudentCacheId(Student student) {
int result;
try {
sqlSession = MyBatisUtils.getSqlSession();
result =sqlSession.insert("insertStudent", student);
sqlSession.commit();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return result;
}
4. 测试方法
@Test
public void testinsertStudent(){
Student student=new Student("helloworld",11);
int result = dao.insertStudent(student);
System.out.println("result:"+result);
}
这样的方式对于update以及删除方法都是有效的,这是因为他们都是属于修改方法,属于读写模式,而select方式是属于只读方式。

相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    public class Point {    private int x;    private int y;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问