Java编程:MyBatis读取数据库数据

举报
彭世瑜 发表于 2021/08/13 23:44:18 2021/08/13
【摘要】 1、文件结构 一共涉及3个文件夹8个文件,心累… 注意config文件夹和lib文件夹需要设置为资源文件夹,不然找不到文件 2、依赖下载 放入lib文件夹 mybatis: https://github.com/mybatis/mybatis-3/releases mysql-connector: https://dev.mysql.com/downloads/...

1、文件结构

在这里插入图片描述
一共涉及3个文件夹8个文件,心累…
注意config文件夹和lib文件夹需要设置为资源文件夹,不然找不到文件

2、依赖下载

放入lib文件夹
mybatis: https://github.com/mybatis/mybatis-3/releases
mysql-connector: https://dev.mysql.com/downloads/connector/j/

3、数据准备

demo的数据库下有一个names 的数据表,字段类型和数据如下

mysql> desc names;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(10) | NO   | PRI | NULL | auto_increment |
| name  | varchar(255) | YES  | UNI | NULL | |
| age   | int(10) | YES  | | NULL | |
+-------+--------------+------+-----+---------+----------------+

mysql> select * from names;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  2 | 大红   |   27 |
|  3 | 大壮   |   24 |
|  4 | 秀英   |   25 |
+----+--------+------+

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4、Person类编写

其实就是一个普通的java类
Person.class


public class Person { private Integer id; private  String name; private Integer age; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String toString(){ return "[Person] id: "+ id + " name: " + name + " age :"+ age; }
}


  
 
  • 1
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

5、配置映射器

方式一 文件配置映射器:
映射接口 PersonMapper.class

public interface PersonMapper { public Person getPersonById(Integer id);
}


  
 
  • 1
  • 2
  • 3
  • 4

映射文件 PersonMapper.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">

<!--
1.PersonMapper为命名空间,为映射接口的全类名
2.id为唯一标识,与PersonMapper接口中的对应方法名相同
3.resultType为查询后的返回类型
4.#{id}指从传递过来的参数中取出id值
-->
<mapper namespace="PersonMapper"> <select id="getPersonById" resultType="Person"> select id,name, age from names where id = #{id}
  </select>
</mapper>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

方式二 注解配置映射器:
PersonMapperAnnoation.class

import org.apache.ibatis.annotations.Select;

public interface PersonMapperAnnoation { @Select("select id, name, age from names where id = #{id}") public Person getPersonById(Integer id);
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样看来,方式2更为简洁和清晰

6、数据库配置

填入数据库的地址,账号,密码
配置映射器,可以使用两种方式resourceclass

<?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> <environments default="development"> <environment id="development"> <!-- 配置事务管理器,采用的是JDBC的管理器方式 --> <transactionManager type="JDBC"/> <!--  POOLED代表采用MyBatis内部提供的连接池方式 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/demo"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--  引入映射器 包名+文件名--> <mappers> <mapper resource="PersonMapper.xml"/> <mapper class="PersonMapperAnnoation"/> </mappers>
</configuration>

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

7、代码测试

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class mybatisDemo { public static void main(String[] args) throws IOException{ //1.根据MyBatis的配置文件,即mybatis-config.xml创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); //2.获取session实例开启会话,其能直接执行*已经映射的SQL语句* SqlSession session = sqlSessionFactory.openSession(); try { // 方式1 查询 //3.获取接口的实现类对象 PersonMapper personMapper = session.getMapper(PersonMapper.class); //4.执行查询操作 Person person = personMapper.getPersonById(2); System.out.println(person); // 方式2 查询 //3.获取接口的实现类对象 PersonMapperAnnoation personMapperAnnoation = session.getMapper(PersonMapperAnnoation.class); //4.执行查询操作 Person person1 = personMapperAnnoation.getPersonById(2); System.out.println(person1); } finally { //4.关闭会话session session.close(); } } //根据MyBatis的配置文件,即mybatis-config.xml创建SqlSessionFactory public static SqlSessionFactory getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); return sqlSessionFactory; }

}

/*
两种方式都能查到数据
[Person] id: 2 name: 大红 age :27
[Person] id: 2 name: 大红 age :27
*/

  
 
  • 1
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

参考
(二)MyBatis学习笔记-HelloWorld

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/86549734

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。