mybatis+maven对数据库的简单用法

为什么要用mybatis?

1) 系统的部分或全部数据来自现有数据库, 出于安全性的考虑, 只为开
发团队提供几条
Select SQL(或存储过程) 以获取所需数据, 具体的表
结构不予公开。
2) 开发规范中要求, 所有牵涉到业务逻辑部分的数据库操作, 必须在数
据库层由存储过程实现(对于金融行业而言, 工商银行、 中国银行和交
通银行, 都在开发规范中严格指定)。
3) 系统数据处理量巨大, 性能要求极为苛刻, 这通常意味着我们必须由
经过高度优化的SQL语句(或存储过程) 才能达到系统性能设计指标.

什么是MyBatis?

  1. MyBatis是一个运用于持久层的数据操作框架
  2. MyBatis是从iBatis升级而来
  3. 使用 MyBatis提供的ORM机制, 业务逻辑层实现人员操作的是JAVA对象, 该层面与Hibernate机制中的相同。 对于具体的数据库操作而言,Hibernate会自动生成SQL并执行, 而MyBatis要求开发人员具体编写SQL语句。MyBatis在数据库移植性和SQL开发工作量上进行了让步, 从而提升了系统设计的灵活性, 扩展了其自由空间。  


MyBatis的优势?

  • 支持ORM
  • 支持动态SQL
  • 外部化SQL语句
  • 封装SQL语句  

demo结构图


在maven仓库中引入mybatis架包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.mybatis</groupId>
	<artifactId>mybatisDemo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependencies>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>
	</dependencies>

</project>
  我这里是用的oracle数据库,但由于oracle数据库不能引用,具体你可以查下百度。

我这里是直接把架包下下来引用的。

2第二步,创建mybatis的config文件,前提你要有这两个文件。,

大家可以到我度盘去链接: https://pan.baidu.com/s/1o8hmPvW 密码: wqsh




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "--mybatisconfig--" "mybatis-3-config.dtd" >
<configuration>
	<typeAliases>
<!--你的bean文件,在mapper文件中有引用-->
		<typeAlias type="com.shandian.bean.Emp" alias="emp" />
	</typeAliases>
	<environments default="oracle">

		<environment id="oracle">

			<transactionManager type="JDBC">
			</transactionManager>
			<!--连接池 -->
			<dataSource type="POOLED">
				<!--连接数据库驱动 -->
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<!-- URL -->
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
				<!--用户名 -->
				<property name="username" value="scott" />
				<property name="password" value="tiger" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
	<!--引用你的empmapper.xml文件  -->
		<mapper resource="com/shandian/mapper/empmapper.xml" />
	</mappers>
</configuration>
 3,创建mapper文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "--mybatismapper--" "mybatis-3-mapper.dtd" >
<mapper namespace="com.shandian.mapper.empmapper">
	<!--resultType的值引用了config中typeAliases> <typeAlias type="com.shandian.bean.Emp" 
		alias="emp" /> </typeAliases>的alias的值 -->
	<select id="queryall" resultType="emp" resultMap="empResult">
		select *from
		emp
	</select>
	<!-- 添加 -->
	<!-- 添加操作并没有结果集,结果类型也没有 -->
	<!--useGeneratedKeys="true"这个可以实现标识列的自动增长,但oracle并没不能自动增长 -->
	<insert id="add" parameterType="emp">
		insert into emp(empno,ename,job)
		values(emp_sql.nextval,#{ename},#{job})
	</insert>
	<!-- 进行删除操作 -->
	<!-- id的意思表示命名空间的唯一标识,与映射接口中的方法一致 -->
	<delete id="delete" parameterType="int">
		delete from emp where
		empno=#{empno}
	</delete>
	<!-- 修改 -->
	<update id="update" parameterType="emp">
		update emp
		<!-- 动态的sql修改 -->
		<set>
			<!--test里面的值是你bean里面的变量名,而不是数据库中的字段名 -->
			<if test="ename!=null">

				ENAME=#{ename},
			</if>
			<if test="job!=null">
				JOB=#{job},
			</if>
			<if test="mgr!=null">
				MGR=#{mgr},
			</if>
			<if test="hiredate!=null">
				HIREDATE=#{hiredate},
			</if>
			<if test="sal!=null">
				SAL=#{sal},
			</if>
			<if test="comm!=null">
				COMM=#{comm},
			</if>
			<if test="Integerno!=null">
				DEPTNO=#{Integerno}
			</if>
		</set>
		where empno=#{empno}
	</update>
	<resultMap type="emp" id="empResult">
		<id column="EMPNO" property="empno" />
		<result column="ENAME" property="ename" />
		<result column="JOB" property="job" />
		<result column="MGR" property="mgr" />
		<result column="HIREDATE" property="hiredate" />
		<result column="SAL" property="sal" />
		<result column="COMM" property="comm" />
		<result column="DEPTNO" property="Integerno" />
	</resultMap>
</mapper>

 4,此mapper所对应的映射接口,(推荐使用这种操作)

package com.shandian.mapper;

import java.util.List;

import com.shandian.bean.Emp;

//注意,这里的名字必须与com.shandian.mapper.empmapper,中empmapper的名字一致且必须在同一包中,不然就不能映射
public interface empmapper {
	// 这个方法名必须与empmaper中进行添加操作的名字一样的.
	// 参数的类型也要一致
	void add(Emp emp);

	// 查询全部
	List<Emp> queryall();

	// 进行删除
	void delete(int id);

	// 修改
	void update(Emp emp);
}
 5,简单的对其进行了增删查改操作

package com.shandian.texst;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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 com.shandian.bean.Emp;
import com.shandian.mapper.empmapper;

public class EmpTexst {
	// 测试
	public static void main(String[] args) {
		// 查询全部
		// t1();
		// 添加
		// t2();
		// 删除
		// t3();
		// 修改
		t4();
	}

	private static void t4() {
		// TODO Auto-generated method stub
		try {
			Reader reader = Resources.getResourceAsReader("mybatisconfig.xml");
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			SqlSession session = factory.openSession();
			Emp emp = new Emp();
			emp.setEmpno(7720);
			emp.setEname("java");
			emp.setJob("java");
			empmapper empmapper = session.getMapper(empmapper.class);
			empmapper.update(emp);
			session.commit();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private static void t3() {
		// TODO Auto-generated method stub
		try {
			Reader reader = Resources.getResourceAsReader("mybatisconfig.xml");
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			SqlSession session = factory.openSession();
			empmapper empmapper = session.getMapper(empmapper.class);
			empmapper.delete(7717);
			session.commit();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private static void t2() {
		// TODO Auto-generated method stub
		try {
			// 加载配置
			Reader reader = Resources.getResourceAsReader("mybatisconfig.xml");
			// 创建
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			SqlSession session = factory.openSession();
			Emp emp = new Emp();
			emp.setEname("admin");
			emp.setJob("Android33");
			// 添加1操作
			/*
			 * session.insert("com.shandian.mapper.empmapper.add", emp);
			 * session.commit();
			 */
			// 添加2操作,这种做法是官方推荐的
			empmapper empMapper = session.getMapper(empmapper.class);
			empMapper.add(emp);
			session.commit();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private static void t1() {
		// TODO Auto-generated method stub
		// 加载配置
		try {
			Reader reader = Resources.getResourceAsReader("mybatisconfig.xml");
			// 创建
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			// 解析资源
			SqlSessionFactory factory = builder.build(reader);
			// 打开session
			SqlSession session = factory.openSession();
			// 1传统写法,不推荐
			/*
			 * List<Emp> list =
			 * session.selectList("com.shandian.mapper.empmapper.queryall"); for
			 * (Emp emp : list) { System.out.println(emp); }
			 */
			// 2,用接口映射的形式进行查询,官方推荐
			empmapper empmapper = session.getMapper(empmapper.class);
			List<Emp> list = empmapper.queryall();
			for (Emp emp : list) {
				System.out.println(emp);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


 

demo的下载

链接: https://pan.baidu.com/s/1slvZObr 密码: 6bi4





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较宏观的问题,需要分步骤进行讲解。我会尽可能地详细地回答你的问题。 首先,我需要确认一下你对这些技术的了解程度。你是否已经熟悉了这些技术的基本概念和用法? 如果你已经了解了这些技术,那么我们可以开始讲解如何搭建微服务项目。以下是搭建微服务项目的主要步骤: 1. 创建父工程 在Maven中创建一个父工程,用于管理子模块的依赖关系。我们可以在父工程中定义一些公共的依赖和插件,以便在子模块中进行复用。 2. 创建子模块 在父工程下创建多个子模块,每个子模块代表一个微服务。每个子模块可以有自己的依赖和配置文件,也可以有自己的数据库。 3. 配置Spring Cloud Alibaba 在每个子模块中引入Spring Cloud Alibaba的依赖,并进行相应的配置。Spring Cloud Alibaba提供了一系列的组件,包括服务注册与发现、配置管理、消息队列、分布式事务等,我们可以根据实际需要选择使用哪些组件。 4. 集成MyBatis 在每个子模块中引入MyBatis的依赖,并进行相应的配置。MyBatis是一个轻量级的ORM框架,可以方便地进行数据库操作。 5. 编写业务代码 在每个子模块中编写业务代码,包括控制器、服务、DAO等。在编写业务代码时,我们可以通过注解进行调用其他微服务的接口,实现微服务之间的调用。 6. 部署微服务 将每个子模块打包成jar包,并分别部署到不同的服务器上。在每个服务器上启动对应的微服务,微服务之间就可以通过网络进行通信了。 以上是搭建微服务项目的主要步骤。当然,实际上还有很多细节需要注意,比如如何处理微服务之间的异常、如何进行负载均衡等等。但总的来说,搭建微服务项目的核心思想就是将一个大型的应用拆分成多个小型的服务,每个服务都有自己的职责,通过网络进行通信,最终共同完成整个应用的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值