• 数据库操作(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

    测试进阶轨迹
  • 相关阅读:
    让tabgroup在下方显示
    titanium好的学习网站推荐
    代码积累
    Ti.include和require的异同
    Titanium基本介绍
    Java微信支付开发之扫码支付模式一
    Java微信公众平台开发之用户管理(用户基本信息和关注列表)
    Java微信支付开发之公众号支付(微信内H5调起支付)
    Java微信公众平台开发之自定义菜单
    Java微信支付开发之扫码支付模式二
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/15128403.html
Copyright © 2020-2023  润新知