Mybatis代码实例

时间:2020-05-30
本文章向大家介绍Mybatis代码实例,主要包括Mybatis代码实例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

@

导入Mybatis依赖包

mybatis-3.5.4.jar
mysql-connector-java-5.1.49.jar

1、数据库配置文件 db.properties

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456

2、Mybatis核心配置文件 SqlMapConfig.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>
    <!-- 一种写法,以${driver}引用,注意 & 要变成 & 详情请百度 -->
    <!--<properties>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>-->
    <!-- 引入db.properties文件配置 -->
    <properties resource="db.properties"/>
    <settings>
        <!-- 控制台打印日志,包括查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <!-- 开发环境,可以配置多个,default:指定采用哪个环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 事务管理器,由mybatis进行管理,事务管理类型:JDBC、MANAGED -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据源,池类型的数据源,类型:POOLED、UNPOOLED、JNDI -->
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件 mapper -->
    <mappers>
        <!-- 资源路径下 -->
        <mapper resource="mappers/test1.xml"/>
        <!-- 该方式是加载指定包下的所有映射文件 -->
        <!--<package name="com.mybatis.dao"/>-->
    </mappers>
</configuration>

3、映射文件 test1Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空间,随便写,一般保证命名空间唯一,用动态代理必需写接口的全限定名 -->
<mapper namespace="test1">
    <select id="findAll" resultType="com.mybatis.pojo.Table1">
        select * from table1
    </select>
</mapper>

mapper写法

<!-- #{}、${}都是占位符,#{}带有'',${}不带'',优先使用#{},因为后者会导致sql注入的问题 -->
<select id="selectone" resultType="com.mybatis.user.testEnpity">
    select * from user id=#{id} and title=${title}
</select>

<!-- resultMap 建立 SQL 查询结果字段与实体属性的映射关系信息 -->
<resultMap id="BaseResultMap" type="com.mybatis.student.model.Student">
    <id property="id" column="id" />
    <result column="NAME" property="name" />
    <result column="HOBBY" property="hobby" />
    <result column="MAJOR" property="major" />
    <result column="BIRTHDAY" property="birthday" />
    <result column="AGE" property="age" />
</resultMap>
<!--查询时resultMap引用该resultMap -->
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="Object">
    select id,name,hobby,major,birthday,age from student where id=#{id}
</select>

4、实体类 Table1.java

package com.mybatis.pojo;

public class Table1 {
    private int id;
    private int num;
    private int num1;
    private String text;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum1() {
        return num1;
    }
    public void setNum1(int num1) {
        this.num1 = num1;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    @Override
    public String toString() {
        return "Table1{" +
                "id=" + id +
                ", num=" + num +
                ", num1=" + num1 +
                ", text='" + text + '\'' +
                '}';
    }
}

通常写法:接口+实现+调用

简单项目目录图

1、接口 Table1Dao.java
package com.mybatis.dao;

import com.mybatis.pojo.Table1;

import java.util.List;

public interface Table1Dao {
    List<Table1> findAll();
}
2、实现类 Table1DaoImpl.java
package com.mybatis.dao.impl;

import com.mybatis.dao.Table1Dao;
import com.mybatis.pojo.Table1;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Table1DaoImpl implements Table1Dao {
    public SqlSession sqlSession;

    public Table1DaoImpl(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<Table1> findAll() {
        // 操作CRUD,第一个参数:指定statement,规则:命名空间.statementId,后面的参数是sql对应的参数
        return sqlSession.selectList("test1.findAll");
    }
}
3、调用
import com.mybatis.dao.Table1Dao;
import com.mybatis.dao.impl.Table1DaoImpl;
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 Test {
    @org.junit.Test
    public void test() throws IOException {
        // 读取配置文件
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 构建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 创建
        Table1Dao table1Dao = new Table1DaoImpl(sqlSession);
        // 调用
        table1Dao.findAll();
        sqlSession.close();
    }
}

动态代理

Mybatis详细教程:https://blog.csdn.net/hellozpc/article/details/80878563

原文地址:https://www.cnblogs.com/wccw/p/12992117.html