MyBatis框架——单表查询
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框架——单表查询的更多相关文章
- MyBatis框架——多表查询
		
MyBatis多表查询, 从表中映射主表,使用 association 标签,通过设置 javaType 属性关联实体类: 主表映射从表,使用 collection 标签,通过 ofType 属性关联 ...
 - Mybatis框架-联表查询显示问题解决
		
需求:查询结果要求显示用户名,用户密码,用户的角色 因为在用户表中只有用户角色码值,没有对应的名称,角色名称是在码表smbms_role表中,这时我们就需要联表查询了. 这里需要在User实体类中添加 ...
 - Django框架----数据库表的单表查询
		
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
 - Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
		
摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django ORM 常用字段和参数: 常用字段:#AutoFieldint自增列,必须填入参数primary_key = True,当model中 ...
 - Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段
		
单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...
 - python 之   Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)
		
12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...
 - 零基础学习java------37---------mybatis的高级映射(单表查询,多表(一对一,一对多)),逆向工程,Spring(IOC,DI,创建对象,AOP)
		
一. mybatis的高级映射 1 单表,字段不一致 resultType输出映射: 要求查询的字段名(数据库中表格的字段)和对应的java类型的属性名一致,数据可以完成封装映射 如果字段和jav ...
 - EF查询百万级数据的性能测试--单表查询
		
一.起因 个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...
 - 2008技术内幕:T-SQL语言基础 单表查询摘记
		
这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLFundamentals2008 ,官网给出的连接是这 ...
 
随机推荐
- Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件)
			
Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件) 下载链接:http://download.csdn.net/detail/zlqqhs/507 ...
 - Autotestplat体验中心
			
web端 移动端 可戳[阅读原文]进行体验
 - Windows 下 LaTeX 手动安装宏包(package)以及生成帮助文档的整套流程
			
本文简单介绍如何手动安装一个 LaTeX 宏包. 一般来说,下载的 TeX 发行版已经自带了很多宏包,可以满足绝大部分需求,但是偶尔我 们也可能碰到需要使用的宏包碰巧没有安装的情况,这时我们就需要自己 ...
 - Andrew's Blog / 《Network Programming with Go》学习笔记
			
第一章: Architecture(体系结构) Protocol Layers(协议层) ISO OSI Protocol 每层的功能: 网络层提供交换及路由技术 传输层提供了终端系统之间的数据透明传 ...
 - O2O倒逼汽车行业改革:服务超越销售成重心
			
汽车作为越来越普及的出行工具,已经进入千家万户.与其他家具.家电.服饰等产品不同,从新车销售到售后保养.保险购买.维修乃至报废阶段,都能细分化,形成一个个潜力巨大的垂直领域.而随着互联网元素的渗入,汽 ...
 - Python2.7错误处理FileNotFoundError报错NameError: name 'FileNotFoundError' is not defined
			
错误信息如下: 原因是FileNotFoundError是python3.0中的写法,而Python2.7中应写为IOError.
 - CSS 加载动画
			
CSS加载动画 实现加载动画效果,需要的两个关键步骤: 1.做出环形外观 border:16px solid #f3f3f3; border-radius:50%; border-top:16px s ...
 - SVN版本控制说明与相关指令
			
SVN版本控制说明 目的 多个版本中并行开发,提高开发效率: 保证各个版本和各个环境(开发.测试.主干)的独立,避免相互影响: 通过分支与主干的合并,这样主干永远是最新.最高版本,并且都在后面的测试中 ...
 - 8421BCD转余3码Verilog HDL的设计(1)
			
近期阅读Verilog HDL高级数字设计(第二版)中,遇到了串行比特流BCD码转余3码转换器的设计,比较独特的是: (1)该转换器的输入为1位串行比特流,输出也为1位串行比特流. BCD码与余三码的 ...
 - node跨域方法
			
第一种:jsonp 参看用nodejs实现json和jsonp服务 第二种:res.wirteHeadnode部分 var http = require('http') var url = requi ...