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 ,官网给出的连接是这 ...
随机推荐
- CORS’s source, Principle and Implementation
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源.当一个资源从与该资源 ...
- JXJJOI2018_T1_market
题目描述 某天Lemon去超市买柠檬,他发现货架上有N个柠檬,每个柠檬都有一个重量Wi和价格Ci. Lemon身上只带了S元钱,因此他想要买一个价格不超过S的柠檬回家,另外,他希望他买的那个柠檬的性价 ...
- 6. Go 语言中结构体的使用
1. 结构体的定义格式 在go语言中结果的定义格式如下: 123 type structName struct { filedList} 列子如下: 1234 type Person struct { ...
- numpy的索引
import numpy as np A =np.arange(3,15).reshape(3,4) print(A) #第一行 print(A[2]) #返回元素 print(A[1][2]) pr ...
- songCMS 3.15 cookie SQLINJ
./code/profile.php ... $db = new db(); $SQL = "SELECT * FROM `{$dbprefix}user` WHERE `ID` = {$_ ...
- 达拉草201771010105《面向对象程序设计(java)》第七周学习总结
达拉草201771010105<面向对象程序设计(java)>第七周学习总结 实验七继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符 ...
- 设计模式-12组合模式(Composite Pattern)
1.模式动机 很多时候会存在"部分-整体"的关系,例如:大学中的部门与学院.总公司中的部门与分公司.学习用品中的书与书包.在软件开发中也是这样,例如,文件系统中的文件与文件夹.窗体 ...
- Xcode辅助工具之热重载插件利器
该博客首发于github.io 2018-06-13 13:43:44 文章最新修改于: 2019-03-31 13:47:20 昨天刚刚看完iOSTips微信公众号推送的文章, Injection: ...
- JavaScript的类数组
类数组对象啊,被人问到它跟真正的数组对象有什么差别啊?说不上来就老埋汰了,只知道函数的arguments对象是个类数组对象,也有length属性,其他呢?干货奉上: 首先先说说数组吧: 1,当有新的元 ...
- Educational Codeforces Round 83 (Rated for Div. 2)A--C
题意:给出一个边数为n的等边多边形,问是否可以变成m的等边多边形.条件是同一个中心,共用原顶点. 解析:直接n%m==0即可,这样就是平分了.签到题没得说了. #include<iostream ...