第一个MyBatis程序(博客初写者)

第一个Mybatis程序

一、环境:

  1、JDK1.8

  2、MYSQL5.7

  3、IDEA

  4、MAVEN 3.63

二、Mybatis认识:

  1、查看官方文档

https://mybatis.org/mybatis-3/zh/index.html

  2、查看百度百科

https://baike.so.com/doc/5582692-5795562.html

   MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或 注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  3、什么是持久层框架:

  所谓"持久"就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。

  持久层就是系统中专注于实现数据持久化的相对独立的层面。

  持久层设计的目标包括:
  - 数据存储逻辑的分离,提供抽象化的数据访问接口。
  - 数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。
  - 资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)。
    - 数据抽象,提供更面向对象的数据操作。

二、搭建环境:

  1、新建一个maven 在pom.xml中导入依赖(mysql驱动、mybatis、junit)

  

 1 <dependencies>
 2    <!--mysql驱动-->
 3     <dependency>
 4       <groupId>mysql</groupId>
 5       <artifactId>mysql-connector-java</artifactId>
 6       <version>5.1.47</version>
 7     </dependency>
 8     <!--mybatis-->
 9     <dependency>
10       <groupId>org.mybatis</groupId>
11       <artifactId>mybatis</artifactId>
12       <version>3.5.2</version>
13     </dependency>
14     <!--junit-->
15     <dependency>
16       <groupId>junit</groupId>
17       <artifactId>junit</artifactId>
18       <version>4.11</version>
19       <scope>test</scope>
20     </dependency>
21   </dependencies>

   2、连接数据库(database->mysql)必须mysql已经安装配置

    

3、mybatis 核心文件的配置 -->resources -> mybatis-config.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6
 7     <environments default="development">
 8         <environment id="development">
 9             <transactionManager type="JDBC"/>
10             <dataSource type="POOLED">
11                 <property name="driver" value="com.mysql.jdbc.Driver"/>
12                 <property name="url" value="jdbc:mysql://localhost:3306?useSSL=true&amp;useUnicode=true&amp;useEncoding=UTF-8"/>
13                 <property name="username" value="root"/>
14                 <property name="password" value="123456"/>
15             </dataSource>
16         </environment>
17     </environments>
18     <mappers>
19         <mapper resource="com/guo/dao/UserMapper.xml"/>
20     </mappers>
21 </configuration>

4、创建 工具类 com.guo.untiul ->MybatishUtils

 1 pcublic clnass MybaatisUtiils {j
 2n    public static SqlSessionFactory sqlSessionFactory;
 3     static {
 4         try {
 5             String resource = "mybatis-config.xml";
 6             InputStream inputStream = Resources.getResourceAsStream(resource);
 7              sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 8         } catch (IOException e) {
 9             e.printStackTrace();
10         }
11     }
12
13     //创建SqlSession 的实例
14     public static SqlSession getSqlSession(){
15         return sqlSessionFactory.openSession();
16     }
17 }

三、编写代码:

  1、创建实体类  com.guo.pojo->User

  

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

  2、创建接口 com.guo.dao->UserMapper

1 public interface UserMapper {
2     List<User> getUserList();
3 }

  3、创建sql语句映射文件com.guo.dao->UserMapper.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <mapper namespace="com.guo.dao.UserMapper">
 7     <select id="getUserList" resultType="com.guo.pojo.User">
 8     select * from student.user
 9   </select>
10 </mapper>

4、编写测试类:在test文件夹创建测试类com.guo.dao->UserMapperTest

 1 public class UserMapperTest {
 2     @Test
 3     public void test(){
 4         //获取SqlSession对象
 5         SqlSession sqlSession = MybatisUtils.getSqlSession();
 6         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
 7         List<User> userList = userMapper.getUserList();
 8         for (User user : userList) {
 9             System.out.println(user);
10         }
11
12         //关闭SqlSession对象
13         sqlSession.close();
14     }
15 }

这样子还是不能获取数据库数据,还会有什么异常,让我们来分析下原因:

四、异常处理:

1、BindingException:(绑定异常)

  解决方法:在resources -> mybatis-config.xml配置maven

1    <mappers>
2         <mapper resource="com/guo/dao/UserMapper.xml"/>
3     </mappers>

2、ExceptionInInitializerError:(初始化异常)

解决方法:在pom.xml文件中增加资源过滤

 1     <build>
 2         <resources>
 3             <resource>
 4                 <directory>src/main/java</directory>
 5                 <includes>
 6                     <include>**/*.properties</include>
 7                     <include>**/*.xml</include>
 8                 </includes>
 9                 <filtering>false</filtering>
10             </resource>
11             <resource>
12                 <directory>src/main/resources</directory>
13                 <includes>
14                     <include>**/*.properties</include>
15                     <include>**/*.xml</include>
16                 </includes>
17                 <filtering>false</filtering>
18             </resource>
19         </resources>
20     </build>

五、结果:

六:引用链接:https://blog.csdn.net/gdsgdh308227363/article/details/81269090

  

原文地址:https://www.cnblogs.com/golo/p/12030650.html

时间: 2024-08-29 05:50:12

第一个MyBatis程序(博客初写者)的相关文章

第一个Python程序——博客自动访问脚本

动机 今天有朋友写信说他认为自己的wordpress博客内显示的访问统计信息不正常,希望我能为他制造一些访问信息,供他对比.朋友提出的请求是在短时间内快速打开100个不同的博客页面,以便他从产生的访问量变化中理解博客访问数据. 本人作为一个搞计算机的人,有把任何重复性劳动自动化的冲动,所以虽然点开100个网页的任务手工做并不复杂,但还是从一开始就彻底否定了.刚好想学Python很久了,于是就拿这次的小机会来学习一把,顺便记录下第一次的Python学习成果. 本文使用Python 2.7.3实现了

CSS:仿写博客园写一个静态网页

要求:一个小时仿照博客园的格局,写一个静态的网页,主要采用HTML+CSS+DIV的布局方式, 新建两个文件:website.html.website.css website.html代码如下: <!doctype html> <html lang="zh-CN"> <head> <meta charset="ansi"> <media name="description" content=&

再学IHanlder 类----------------关于Asp.net与iis原理网上看博客收获写一个验证码用一般处理程序记的好长时间前就写过不过现在再看有点不一样的感觉

建一个web网站 新建一般处理程序直接贴代码: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.SessionState;using System.Drawing;using System.Text;using System.Drawing.Imaging; namespace HandlerStudy{    /// <summary>    /

汇编实验1及博客初尝试

Part 1 这一篇博客应该不是传说中的技术博客.初闻博客该是小学的计算机课,那个时候老师教我们注册邮箱注册博客注册论坛.注册完了我们便去玩植物大战僵尸,不用动脑子的重复性操作.计算机老师也和我们探究了游戏的本质.一次一次的重复性操作.注册博客似乎要用到邮箱,邮箱无论是账号还是密码总是忘啊,这一周上课,下一周再用,账号密码不记得了.依稀记得计算机老师教我们骗过注册博客必须填邮箱的方法,手机号[email protected]或是[email protected].小学时写过第一篇博客.写了什么不

第一个MyBatis程序

最近研究了一些MyBatis技术,虽然工作中还未用到,但是觉得了解一下也是不错的.这里记录了第一个简单的Demo程序,防止自己忘记. 第一步需要配置Mybatis-config.xml文件.注意:这里使用了2种方式对实体类进行了映射.在<Mapper>中,第一个User对象用XMl格式进行映射,第二个Category用注解CategoryMappper格式进行映射. <?xml version="1.0" encoding="UTF-8"?>

(转载)记:从百度空间搬家到博客园--写博客要写的舒服

转自http://www.cnblogs.com/syxchina/archive/2011/10/03/2198468.html 一直都有把百度空间搬家的想法,但由于百度空间我将就的用了快3年了,也写了很多文章,交了很多朋友,实在舍不得,但最近实在忍不住百度空间的限制,字数限制.无代码格式化.不支持windows live writer,每次写博客格式图片处理很是伤心,很多时候甚至不写博客,直接记录在doc文件来的方便省心!但想想平时很多只是汲取与互联网谷歌,不贡献点实在说不过去!下定决心,搬

(今天是第一天开始写博客)写一下java集合类使用中容易出现的错误,慢慢积累

java中经常使用到的集合类有:Set,Map,List 关于Set,我犯了好几次的错误: ①Set1=Set2,实际上是让Set1也指向Set2了,如果此时Set2改变,那么Set1也会改变.算是一种地址赋值吧~ 如果想要让Set1中的元素与Set2中的元素相同,应该使用Set1.addAll(Set2). 其实,还有字符串也是一样的. if(str=="#"){...} 这样的写法,是不对的,条件不会成立的,因为"#"的地址与str的地址不一样. 正确:if(s

博客园里写blog可以添加自己的js文件

在博客园里写blog可以添加自己的js文件,这样就可以按照自己的要求在blog里实现一些自己想要的功能. 今天下午,度娘了很久,又看了一些大神的博客,debug了一下他们的代码,终于知道怎么添加js了,现在整理出来,帮助那些像我一样,想在博客上自己整整的朋友. 好废话不多说了直接上图. 进入自己的博客首页,点击[管理] 点击管理进入如下界面,点击[文件],如下图 做好这些准备工作以后,开始打开写随笔界面,添加js文件引用,如下图

使用jquery moblie框架搭建一个手机版博客园

声明 本例仅供学习交流使用,不参与任何商业活动. 前言 本例结合我的前两篇博客 使用node.js爬取博客园首页的博客 和 使用原生node.js搭建HTTP服务器,支持MP4视频.图片传输,支持下载rar文件,使用jquery moblie框架搭建了一个简单的手机版博客园. 项目地址为手机版博客园http://blog.mdzz.tv:1011/,二维码和效果图如下,第一次加载可能有点慢. 服务器端输出日志如下: 源码我放在github上了,地址https://github.com/guass