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

    xiaoxiao2021-03-25  74

    为什么要用mybatis?

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

    什么是MyBatis?

    MyBatis是一个运用于持久层的数据操作框架MyBatis是从iBatis升级而来使用 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

    转载请注明原文地址: https://ju.6miu.com/read-33545.html

    最新回复(0)