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 ,官网给出的连接是这 ...
随机推荐
- 吴裕雄--天生自然 R语言开发学习:回归(续四)
#------------------------------------------------------------# # R in Action (2nd ed): Chapter 8 # # ...
- 吴裕雄--天生自然 人工智能机器学习实战代码:LASSO回归
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model from s ...
- 批量修改datafram中某一列
如要对df中列名为“values”的值做修改,大于等于50改为1,小于50改为0,可用apply函数来实现: def fun(x): if x >= 50: return 1 else: ret ...
- IP地址0.0.0.0表示什么
参考RFC文档: 0.0.0.0/8 - Addresses in this block refer to source hosts on "this"network. Addre ...
- Linux上centOs6+安装mysql5.7详细教程 - 前端小鱼塘
https://coyhom.github.io/ 人类的本质是复读机,作为一个非linux专业人员学习linux最好的办法是重复 环境centos6.5 版本5.7 1: 检测系统是否自带安装mys ...
- JavaScript 核心学习——继承
本篇博文讲述如何在 JavaScript 中实现继承,以及原型与原型链的知识,在附录中将会讲述 JavaScript 面向对象的常见错误. ##原型与原型链在 JavaScript 中,使用类将会付出 ...
- Redis(2)——跳跃表
一.跳跃表简介 跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文<Skip lists: a probabilistic alternative to ba ...
- brup安装证书抓取https
brup安装证书抓取https 0x00下载 下载安装brup 前提是需要java环境 0X01配置brup 配置brup的代理设置 0X02设置浏览器 我使用的是火狐,以下都以火狐为例 0X03证书 ...
- 2——PHP defined()函数
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 如何看待Java是世界上最好的语言?
Java出现二十多年以来,一直都是主流的开发语言,Java创建于 1995 年,在 20多年的发展历程中,Java 已经证明自己是用于自定义软件开发的顶级通用编程语言. Java 广泛应用于科学教育. ...