[刘阳Java]_快速搭建MyBatis环境_第2讲

1.MyBatis的环境配置

  • 导入MyBatis包, mybatis-3.2.8.jar
  • 导入MySQL驱动包, mysql-connector-java-5.1.24-bin.jar
  • 创建表的实体类, 例如: MyUser(id, name, password)
  • 编写MyBatis的核心配置文件, SqlMapConfig.xml
  • 编写映射文件, 例如: MyUserMapper.xml
  • 编写测试来完成数据库CRUD操作

2.MyBatis代码编写原理图,因为环境搭建成功不成功需要我们写一段代码来测试。但是如何编写一段MyBatis的测试代码,我们有必要先了解一下MyBatis整个代码运行的原理图。在这里要谢谢CSDN上这位小伙伴提供的图片

3.如何导入MyBatis的jar包都非常容易,所以这里我们从MyBatis核心配置文件编写开始讲解编写MyBatis程序的流程

  • 主要配置mybatis的运行环境, 数据源, 事务, 用户名, 用户密码, 缓存等。一般此配置文件存放到src目录下
 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">
 3 <configuration>
 4     <!-- 将数据库连接信息简化到Java的属性文件中 -->
 5     <properties resource="jdbc.properties"></properties>
 6
 7     <!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的  -->
 8     <typeAliases>
 9         <!-- com.mybatis2.entity包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名 -->
10         <!-- 如com.mybatis2.entity.MyUser这个实体类的别名就会被设置成MyUser -->
11         <package name="com.mybatis2.entity"/>
12     </typeAliases>
13
14     <!-- 配置开发模式, 添加数据库信息, 开启事务模式 -->
15     <environments default="development">
16         <environment id="development">
17             <transactionManager type="JDBC"></transactionManager>
18             <dataSource type="POOLED">
19                 <property name="driver" value="${mysql.driver}"/>
20                 <property name="url" value="${mysql.url}"/>
21                 <property name="username" value="${mysql.username}"/>
22                 <property name="password" value="${mysql.password}"/>
23             </dataSource>
24         </environment>
25     </environments>
26
27     <mappers>
28         <mapper resource="com/mybatis2/mapper/MyUserMapper.xml"/>
29     </mappers>
30 </configuration>

4.编写实体类

  • 什么实体类:简单说就是一个普通的JavaBean, 满足一点要求, 就是JavaBean的属性需要对应数据库表中的字段
1 create table MyUser (
2   id int primary key AUTO_INCREMENT,
3   name varchar(20),
4   password varchar(20)
5 )
 1 package com.mybatis2.entity;
 2
 3 public class MyUser {
 4     /*
 5      * 1.MyUser.java对应表名
 6      * 2.id对应MyUser表中的主键
 7      * 3.username对应MyUser表中的用户名
 8      * 4.userpass对象MyUser表中的用户密码
 9      */
10
11     private int id;
12     private String username;
13     private String userpass;
14     public int getId() {
15         return id;
16     }
17     public void setId(int id) {
18         this.id = id;
19     }
20     public String getUsername() {
21         return username;
22     }
23     public void setUsername(String username) {
24         this.username = username;
25     }
26     public String getUserpass() {
27         return userpass;
28     }
29     public void setUserpass(String userpass) {
30         this.userpass = userpass;
31     }
32
33     @Override
34     public String toString() {
35         return "MyUser [id="+this.id+" username="+this.username+" userpass="+this.userpass+"]";
36     }
37 }

5.配置实体类和数据库表的映射文件

  • MyBatis的映射文件主要关联实体类与数据库表,主要目的是将表返回的数据映射到实体类(封装)
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3
 4 <!-- 给mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名 -->
 5 <mapper namespace="com.mybatis2.mapper.MyUserMapper">
 6
 7     <!-- 根据用户的ID来查询 -->
 8     <!-- 使用占位符:#{}表示一个占位符 -->
 9     <select id="getMyUserById" resultType="MyUser" parameterType="java.lang.Integer">
10         select * from MyUser where id=#{id}
11     </select>
12 </mapper>

6.测试MyBatis

 1 package com.gxa.test;
 2
 3 import java.io.IOException;
 4 import java.io.Reader;
 5 import java.util.List;
 6
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11 import org.junit.Test;
12
13 import com.gxa.pojo.MyUser;
14 import com.gxa.pojo.Team;
15
16 public class Test01 {
17     /**
18      * 启动MyBatis去加载配置文件
19      * 1.java.io.Reader
20      * 2.Resources
21      * 3.SqlSessionFactory
22      */
23     private static Reader reader;
24     private static SqlSessionFactory sqlSessionFactory;
25
26     static {
27         try {
28             reader = Resources.getResourceAsReader("config.xml");
29             sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
30         } catch (IOException e) {
31             e.printStackTrace();
32         }
33     }
34
35     /**
36      * 1.初始化SqlSession, 执行SQL语句
37      * 2.告知程序读哪个映射文件
38      * 3.告知程序执行映射文件中哪个CRUD操作
39      */
40     @Test
41     public void m01() {
42         SqlSession sqlSession = sqlSessionFactory.openSession();
43         String sql = "com.gxa.mapper.MyUserMapper.getMyUser";
44         List<MyUser> list = sqlSession.selectList(sql);
45         System.out.println(list);
46         sqlSession.close();
47     }
48
49 }
时间: 2024-10-13 00:48:26

[刘阳Java]_快速搭建MyBatis环境_第2讲的相关文章

[刘阳Java]_Spring对Dao的支持_第10讲

Spring框架优秀就是在于MVC开发的时候一旦需要对底层的数据库操作,它可以很好的支持JDBC技术,还有现在主流的ORM框架(Hibernate, MyBatis)技术. 重点先介绍Spring对JDBC支持.在Spring对JDBC支持中提供了一个模板JdbcTemplate,此模板封装了对JDBC操作的许多方法,且消除了忽视资源释放而引起的漏洞 1. Spring对JDBC操作需要导入的jar(开发环境配置) common-dbcp.jar:提供数据源的第三方包 common-pool.j

[刘阳Java]_MyBatis_动态SQL标签用法_第7讲

1.MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 2.MyBatis中用于实现动态SQL的元素主要有 if choose(when,otherwise) trim where set foreach 可以看出MyBatis的动态SQL的标签元素和接近JSP中的JSTL语法,下面我就分别详细的介绍一下 3.动态SQL中if的用法 <?xml version="1.0" encoding="UTF-8" ?&g

[刘阳Java]_MyBatis_常规标签的用法_第6讲

一般MyBatis最基本标签,或者说初学者上手最快的标签就是增删改查 1.<insert>标签,在MyBatis中完成数据添加操作 <insert id="addMyUser" parameterType="com.gxa.pojo.MyUser"> insert into MyUser (username, userpass) values (#{username}, #{userpass}) </insert> 2.<u

[刘阳Java]_SpringMVC与Struts2的对比_第12讲

今日来具体给讲讲SpringMVC与Struts2的对比,这样方便朋友们在工作中或者是面试学习中对这两者的区别有个更好的了解 把这张图放在这里,我是想说SpringMVC和Struts2真的是不一样的,虽然在都有着核心分发器等相同的功能组件(这些由MVC模式本身决定的) 为什么SpringMVC会赢得最后的胜利呢?谈几点我自己的看法: 第一.MVC框架的出现是为了将URL从HTTP的世界中映射到Java世界中,这是MVC框架的核心功能.而在URL这一点SpringMVC无疑更加优雅. 第二.从设

[刘阳Java]_Spring对Transaction的支持_第12讲

Spring对数据库事务管理是非常优秀,它利用AOP方式来管理数据库操作的事务.优点:主要体现了业务功能设计不会和事务代码耦合.在使用Spring对Transaction支持中建议采用声明式事务管理来完成. 1. Spring对Transaction设计的代码步骤如下(重点关注配置文件编写,我们以JDBC事务管理来给大家进行阐述) 配置数据源 配置事务管理器,DataSourceTransactionManager.这是事务管理器针对管理JDBC事务 通过AOP让service包下所有Bean的

02. SpringCloud实战项目-快速搭建Linux环境-运维必备

SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款Java面试刷题的开源系统,可以用零碎时间利用小程序查看常见面试题,夯实Java基础. PassJava 项目可以教会你如何搭建SpringBoot项目,Spring Cloud项目 采用流行的技术,如 SpringBoot.MyBatis.Redis. MySql. Mon

快速搭建Web环境 Angularjs + Express3 + Bootstrap3

快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS体验式编程系列文章, 将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框架.在当前如此多 的web框架下,angularjs能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板.Angular.js创新地把后 台技术融入前端开发,扫去jQuery一度的光芒.用angularjs就像写后台代

烂泥:学习ubuntu之快速搭建LNMP环境

本文首发于烂泥行天下 现在公司使用的都是ubuntu系统,这几天由于个别项目需要,需要搭建一个LNMP环境.为了快速搭建这个环境,我使用是apt-get方式进行安装.具体的操作步骤,看下面的文章. PS:按照在centos系统下nginx与php-fpm集成是行不通的,因为按照centos下配置的话,nginx访问的主页是空白的. 一.安装nginx 我们首先来安装nginx,使用如下命令: sudo apt-get -y install nginx nginx安装完毕后,我们来查看nginx都

RHEL 6.2下快速搭建LAMP环境和zabbix 2.0.6

一.快速搭建LAMP环境 1.配置本地yum源 [[email protected] ~]# mount /dev/cdrom /mnt [[email protected] ~]# vi /etc/yum.repos.d/rhel-source.repo [rhel-source] name=rhel-source baseurl=file:///mnt enabled=1 gpgcheck=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redha