数据库操作(jdbc、mybatis)

一、mysql JDBC连接

import java.sql.*;

public class testmysql {
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://数据库域名:端口/库名?user=账号&password=密码";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String sql = "SELECT * from idrisk_rule_kyc_type_result where id_account in ('2226447','2228231')";

        try {
            Class.forName(JDBC_DRIVER);// 加载驱动
            conn = DriverManager.getConnection(DB_URL);// 获取数据库连接
            stmt = conn.createStatement();// 创建执行环境
            rs = stmt.executeQuery(sql);// 执行SQL语句
while (rs.next()) {// 输出数据 System.out.println("id_account: " + rs.getInt("id_account")); System.out.println("call_type: " + rs.getString("call_type")); } } catch (ClassNotFoundException e) { System.out.println("加载驱动异常"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库异常"); e.printStackTrace(); } finally { try { if (rs != null) rs.close(); // 关闭结果数据集 if (stmt != null) stmt.close(); // 关闭执行环境 if (conn != null) conn.close(); // 关闭数据库连接 } catch (SQLException e) { e.printStackTrace(); } } } }

 二、Mybatis

1、一款优秀的持久层框架(持久层就是DAO层,就是操作数据库的部分)
2、支持自定义 SQL、存储过程以及高级映射。
3、免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
4、通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

github下载 https://github.com/mybatis/mybatis-3/releases
maven配置 https://mvnrepository.com/search?q=MYBATIS
中文文档 https://mybatis.net.cn/index.html

什么是持久化?
1、持久化是将程序数据在持久状态和瞬时状态间转换的机制
2、将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
JDBC就是一种持久化机制,文件IO也是一种持久化机制

步骤一,配置maven环境(依赖包)

        <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

步骤二,配置maven环境(资源路径)

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

步骤三,配置mybatis环境

<?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">
<!--事务管理-->
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/employees?serverTimezone=Asia/Shanghai&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="username" value="账号"/>
        <property name="password" value="密码"/>
      </dataSource>
    </environment>
<!--可以配置默认和其他的环境-->
<!--    <environment id="test">-->
    <!--      <transactionManager type="JDBC"/>-->
    <!--      <dataSource type="POOLED">-->
    <!--        <property name="driver" value="${driver}"/>-->
    <!--        <property name="url" value="${url}"/>-->
    <!--        <property name="username" value="${username}"/>-->
    <!--        <property name="password" value="${password}"/>-->
    <!--      </dataSource>-->
    <!--    </environment>-->
  </environments>
<!--mapper注册-->
  <mappers>
    <mapper resource="com/yin/xml/EmployeesDao.xml"/>
  </mappers>

</configuration>

步骤四,创建mybatis工具类

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 MybatisUtils {
    private static  SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "comfig/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

步骤五,创建pojo类

步骤六,创建mapper接口类

import com.yin.pojo.Employees;
import java.util.List;

public interface EmployeesMapper {
    List<Employees> getEmployeesList(int emp_no);
}

步骤七,创建mapper接口的实现——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">
<!--namespace对应mapper接口类-->
<mapper namespace="com.yin.mappers.EmployeesMapper">
<!--id对应mapper接口类的方法,resultType对应结果类型,parameterType对应入参类型-->
    <select id="getEmployeesList" resultType="com.yin.pojo.Employees">
        select * from Employees where emp_no = #{emp_no}
    </select>

</mapper>

步骤八,将步骤五注册到步骤二的mapper中

步骤九,测试

import com.yin.pojo.Employees;
import com.yin.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class EmployeesDaoTest {
    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        List<Employees> Emps = sqlSession.getMapper(EmployeesMapper.class).getEmployeesList(10001);
        for (Employees e : Emps) {
            System.out.println(e);
        }
        sqlSession.close();
    }
}

三、Mybatis 之  resultMap

从user表中查询一条数据出来,查询的结果是一个user对象,即mybatis会自动帮我们把查询的结果转为一个user对象,
只要两者的名称一样,mybatis在转化的过程中就知道数据库的字段和JavaBean中的属性对应

实际开发中,JavaBean中的属性命名我们习惯于驼峰命名法,在数据库中我们更常用下划线命名法
1、使用SQL语句中的别名功能
select id,user_name as userName,password,address from user
2、使用mapUnderscoreToCamelCase属性
mybatis的配置文件中,有一个settings节点,该节点中都是setting节点,setting节点有一个属性叫做mapUnderscoreToCamelCase,
该属性表示是否开启自动驼峰命名规则映射,即从经典的数据库列名A_COLUMN到经典Java属性名aColumn的映射,
这种方式要求我们的数据库字段命名和JavaBean属性命名都要非常规范才能实现
3、使用resultMap来解决

<resultMap id="userMap" type="org.sang.bean.User">
        <id property="id" column="id" javaType="long" jdbcType="NUMERIC"/>
        <result property="userName" column="user_name" javaType="string" jdbcType="VARCHAR"/>
        <result property="password" column="password" javaType="string" jdbcType="VARCHAR"/>
        <result property="address" column="address" javaType="string" jdbcType="VARCHAR"/>
</resultMap>

1、resultMap这个id是resultMap的唯一标识符,后面引用就是通过这个id来引用,然后还定义了type属性,type属性指明了这个resultMap它对应的是哪个JavaBean。
2、在resultMap节点中,id表示哪个字段代表这主键result节点定义了普通的映射关系property表示JavaBean中的属性名称column表示数据库中的字段名称javaType代表JavaBean中该属性的类型jdbcType则表示数据库中该字段的类型

<select id="getUser" resultMap="userMap" parameterType="Long">
        select * from user where id = #{id}
</select>

参考来源:

https://blog.csdn.net/u012702547/article/details/54562619

https://blog.csdn.net/u012702547/article/details/54599132

测试进阶轨迹
原文地址:https://www.cnblogs.com/yinwenbin/p/15128403.html