zoukankan      html  css  js  c++  java
  • 非Spring环境下使用Mybatis操作数据库的流程

    准备工作

    1,  导入mybatis-3.2.7.jar,mysql-connector-5.1.25-bin.jar两个jar包

    2,  在数据库中创建一个db_test数据库,库中有一个表为user_t(id,user_name,password,age)

    3,  创建User.java实体包含属性(id,username,password,age)

    4,  创建jdbc.properties配置文件:内容如下(可以不创建,直接在mybatis_config.xml中的properties中添加propertiy项),用于配置数据库连接相关属性

    driverClassName=com.mysql.jdbc.Driver

    jdbc_url=jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull

    jdbc_username=root

    jdbc_password=

     编写代码

    创建UserMapper.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">
    <mapper namespace="com.liangjidong.mapper.UserMapper">
        <select id="selectById" parameterType="int" resultType="User">
        select id,
        user_name as username,
        password,
        age
        from user_t
        where id=#{id}
        </select>
    </mapper>

    创建mybatis-config.xml

    <?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>
        <properties resource="jdbc.properties"></properties>
        <!-- 创建User类的别名 -->
        <typeAliases>
            <typeAlias type="com.liangjidong.pojo.User" alias="User" />
        </typeAliases>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC">
                </transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${driverClassName}" />
                    <property name="url" value="${jdbc_url}" />
                    <property name="username" value="${jdbc_username}" />
                    <property name="password" value="${jdbc_password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/liangjidong/mapper/UserMapper.xml" />
        </mappers>
    </configuration>

     创建测试程序

    方式一:

            String resource = "mybatis-config.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = builder.build(reader);
            SqlSession session = factory.openSession();
            User user = session.selectOne(
                    "com.liangjidong.mapper.UserMapper.selectById", 1);
            System.out.println(user);
        

    方式二: 对xml文件中的sql语句使用接口方式调用

    前面调用sql语句的方式为

    session.selectOne("com.liangjidong.mapper.UserMapper.selectById", 1);这种方式容易发生的字符串文字和转换的错误。通过使用接口的方式来调用既方便有不易出现错误

    首先定义接口UserMapper.java

    package com.liangjidong.mapper;
    
    import com.liangjidong.pojo.User;
    
    public interface UserMapper {
    
         public User selectById(int id);
    
    }

    请注意,这里面有一个方法名 selectById必须与 User.xml 里面配置的 select id 对应(<select id=" selectById "

    这种方式,要注意的一个地方就是。在UserMapper.xml  的配置文件中,mapper namespace=" com.liangjidong.mapper.UserMapper " ,命名空间非常重要,不能有错,必须与我们定义的package 接口一致。

     

    测试代码如下:

      UserMapper userMapper = session.getMapper(UserMapper.class);

        User user = userMapper.selectById(1);

     对数据库的增,删,该和前面类似


    注意:在update时,遇到整形时,且对象中没有添加该数据,则默认会以0为结果更新到数据库中,解决办法:在判断的时候加上and age!=''"

    <if test="age!=null and age!=''">

               age=#{age},

    </if>

     

    但是调用结束后要提交事务(不然数据是不会更新到数据库中的)

           session.commit();


    总结:mybatis中调用增,删,改,查接口应该返回的数据分别是:

    insert,返回值是:新插入行的主键(primary key);需要包含<selectKey>语句,才会返回主键,否则返回值为null。
    update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
    queryForObject,返回的是:一个实例对象或null;需要包含<select>语句,并且指明resultMap;
    queryForList,返回的是:实例对象的列表;需要包含<select>语句,并且指明resultMap;

  • 相关阅读:
    TCP/IP和HTTP的举例理解
    c#中栈和堆的理解
    c#设计模式之单例模式
    JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值
    JSON.stringify初识
    c# 过滤字符串中的重复字符
    C#中jQuery Ajax实例(二)
    C#中jQuery Ajax实例(一)
    jQuery动态对表格Table进行添加或删除行以及修改列值操作
    asp.net中控件的Attributes用法
  • 原文地址:https://www.cnblogs.com/ljdblog/p/7121401.html
Copyright © 2011-2022 走看看