Mybatis单表查询,示例

1、创建数据库

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50620
Source Host           : 127.0.0.1:3306
Source Database       : mybatis

Target Server Type    : MYSQL
Target Server Version : 50620
File Encoding         : 65001

Date: 2020-03-22 14:02:25
*/

;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` ) NOT NULL AUTO_INCREMENT,
  `username` ) DEFAULT NULL,
  `password` ) DEFAULT NULL,
  `age` ) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_user
-- ----------------------------
');
');

2、创建实体类

package com.sunjian.entity;

/**
 * @author sunjian
 * @date 2020/3/22 9:59
 */
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

3、编写repository接口

package com.sunjian.repository;

import com.sunjian.entity.User;

import java.io.InputStream;
import java.util.List;

/**
 * @author sunjian
 * @date 2020/3/22 10:44
 */
public interface UserRepository {
    public User findUserById(Integer id);
    public User findUserByName(String name);
    public User findUserByIdAndName(int id, String name);
    public User findUserByUser(User user);

    public String findUsernameById(Integer id);

    public List<User> findAll();

    public void addUser(User user);

    public void deleteUser(Integer id);

    public void updateUser(User user);
}

4、编写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">
<mapper namespace="com.sunjian.repository.UserRepository">
    <select id="findUserById" parameterType="java.lang.Integer" resultType="com.sunjian.entity.User">
        select * from t_user where id = #{id}
    </select>

    <select id="findAll" resultType="com.sunjian.entity.User">
        select * from t_user
    </select>

    <insert id="addUser" parameterType="com.sunjian.entity.User">
        insert into t_user(username, password, age)values(#{username}, #{password}, #{age})
    </insert>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from t_user where id = #{id}
    </delete>

    <update id="updateUser" parameterType="com.sunjian.entity.User">
        update t_user set username = #{username}, password = #{password}, age = #{age} where id = #{id}
    </update>

    <select id="findUserByName" parameterType="String" resultType="com.sunjian.entity.User">
        select * from t_user where username = #{username}
    </select>

    <select id="findUserByIdAndName" resultType="com.sunjian.entity.User">
        select * from t_user where id = #{param1} and username = #{param2}
    </select>

    <select id="findUserByUser" parameterType="com.sunjian.entity.User" resultType="com.sunjian.entity.User">
        select * from t_user where id = #{id} and username = #{username}
    </select>

    <select id="findUsernameById" parameterType="java.lang.Integer" resultType="java.lang.String">
        select username from t_user where id = #{id}
    </select>
</mapper>

5、编写config.xml文件,将mapper.xml注册到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>
    <!-- 配置 MyBatis 数据源 -->
    <environments default="development">
        <environment id="development">
            <!-- JDBC事务管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 注册 -->
        <mapper resource="com/sunjian/repository/UserRepository.xml"></mapper>
    </mappers>

</configuration>

6、编写测试类

package com.sunjian.test;

import com.sunjian.entity.User;
import com.sunjian.repository.UserRepository;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

/**
 * @author sunjian
 * @date 2020/3/22 10:20
 */
public class Test {
    public static void main(String[] args) {// Mapper 代理实现自定义接口
        InputStream inputStream = User.class.getClassLoader().getResourceAsStream("config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 获取接口的处理对象
        UserRepository userRepository = sqlSession.getMapper(UserRepository.class);

        // 增加
//        User u = new User();
//        u.setUsername("王五2");
//        u.setPassword("123456");
//        u.setAge(19);
//        userRepository.addUser(u);
//        sqlSession.commit();

        // 删除
//        userRepository.deleteUser(3);
//        sqlSession.commit();

        // 修改
//        User u2 = userRepository.findUserById(1);
//        if(u2 != null){
//            u2.setUsername("张三1");
//            u2.setPassword("1234567");
//            u2.setAge(88);
//            userRepository.updateUser(u2);
//            sqlSession.commit();
//        }

        // 根据id查
//        User user = userRepository.findUserById(2);
//        System.out.println(user);

        // 查所有
//        List<User> list = userRepository.findAll();        //        for(User u1: list){
//            System.out.println(u1);
//        }

        // 根据username查
        User u3 = userRepository.findUserByName("张三");
        System.out.println(u3);

        // 根据id和username查
        User u4 = userRepository.findUserByIdAndName(2, "张三");
        System.out.println(u4);

        // 根据User查
        User u5 = new User();
        u5.setId(2);
        u5.setUsername("张三");
        u5 = userRepository.findUserByUser(u5);
        System.out.println(u5);

        // 根据id查username
        String username = userRepository.findUsernameById(2);
        System.out.println(username);
    }

}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.sunjian</groupId>
    <artifactId>mybatisPrac</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

    <build>
        <!-- 允许程序读取src/main/java目录下的xml文件 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

    </build>

</project>

OK.

MyBatis框架——单表查询的更多相关文章

  1. MyBatis框架——多表查询

    MyBatis多表查询, 从表中映射主表,使用 association 标签,通过设置 javaType 属性关联实体类: 主表映射从表,使用 collection 标签,通过 ofType 属性关联 ...

  2. Mybatis框架-联表查询显示问题解决

    需求:查询结果要求显示用户名,用户密码,用户的角色 因为在用户表中只有用户角色码值,没有对应的名称,角色名称是在码表smbms_role表中,这时我们就需要联表查询了. 这里需要在User实体类中添加 ...

  3. Django框架----数据库表的单表查询

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...

  4. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django ORM 常用字段和参数: 常用字段:#AutoFieldint自增列,必须填入参数primary_key = True,当model中 ...

  5. Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段

    单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...

  6. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  7. 零基础学习java------37---------mybatis的高级映射(单表查询,多表(一对一,一对多)),逆向工程,Spring(IOC,DI,创建对象,AOP)

    一.  mybatis的高级映射 1  单表,字段不一致 resultType输出映射: 要求查询的字段名(数据库中表格的字段)和对应的java类型的属性名一致,数据可以完成封装映射 如果字段和jav ...

  8. EF查询百万级数据的性能测试--单表查询

    一.起因  个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...

  9. 2008技术内幕:T-SQL语言基础 单表查询摘记

    这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLFundamentals2008 ,官网给出的连接是这 ...

随机推荐

  1. Python时间操作所相关

    相关模块:time,datetime,calendar(日历模块) 获取当前时间: # 获取当前10位时间戳,默认返回为float类型 print int(time.time()) # output: ...

  2. 华为Mate 10牵手Microsoft Translator,让离线翻译可媲美在线神经网

    ​编者按:日前,华为新发布的Mate 10手机系列采用Microsoft Translator技术实现了AI驱动型离线翻译功能.华为Mate 10是首款具有NPU(专用神经处理单元)的手机,可用于加速 ...

  3. 机器学习 —— 数据预处理

    对于学习机器学习算法来说,肯定会涉及到数据的处理,因此一开始,对数据的预处理进行学习 对于数据的预处理,大概有如下几步: 步骤1 -- 导入所需库 导入处理数据所需要的python库,有如下两个库是非 ...

  4. 安装Redis内存分析工具rdbtools

    一.安装Python2.7 1. wget http://10.12.29.98:8090/tools/Python-2.7.11.tgz 2. ln -s /usr/local/python2.7/ ...

  5. “一亿”的教训:一次Google信箱诈骗是如何得手的?

    网络诈骗是指以非法占有为目的,利用互联网采用虚构事实或者隐瞒真相的方法,骗取数额较大的公私财物的行为.一年比一年网络诈骗越来越高手段,可以说是日益猖獗.在这里提醒一次各位朋友一定要注意自己的网络安全. ...

  6. java.lang.SecurityException: class "javax.servlet.AsyncContext"'s signer information does not match signer information of other classes in the same package

    最近在写个Http协议的压测挡板时,遇到以下错误. 2018-03-08 10:34:07.808:INFO:oejs.Server:jetty-8.1.9.v20130131 2018-03-08 ...

  7. ip修改成域名

    将ip修改成域名,这样的话可以使程序变得更加健壮,别人不能直接看见你的ip地址. 后来总结下分享给大家.首先找到hosts文件的位置,这个文件是系统dns默认查找的文件. windows 系统:C:\ ...

  8. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...

  9. 使用webpack从0搭建多入口网站脚手架,可复用导航栏/底部通栏/侧边栏,根据页面文件自动更改配置,支持ES6/Less

    之前只知道webpack很强大,但是一直没有深入学习过,这次从头看了一下教程,然后从0开始搭建了一个多入口网站的开发脚手架,期间遇到过很多问题,所以有心整理一下,希望能给大家一点帮助. 多HTML网站 ...

  10. echarts实现饼图及横向柱状图的绘制

    项目中需要绘制饼图,因此简单学习了下echarts的基本使用.head中引入js文件: <script src="/static/frame/echarts/echarts.min.j ...