Mybatis学习笔记之---CRUD(增删改查)
Mybatis的CRUD(增删改查)

1.pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency> </dependencies>
2.SqlMapperConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis的主配置文件-->
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/zml?useUnicode=true&characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
<mappers>
<mapper resource="dao/UserDao.xml"></mapper>
</mappers>
</configuration>
3.Users.java
package entity;
public class Users {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int 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;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
4.UserVo.java
package entity;
public class UserVo {
private Users users;
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
}
5.UserDao.java
package dao;
import entity.UserVo;
import entity.Users;
import java.util.List;
public interface UserDao {
List<Users> findAll();
Users find(int id);
void save(Users users);
void update(Users users);
void delete(int id);
List<Users> findVague(String name);
int count();
List<Users> findVo(UserVo vo);
}
6.UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPEmapper
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">
<!--查询所有-->
<select id="findAll" resultType="entity.Users">
select * from users
</select>
<!--根据ID查询-->
<select id="find" resultType="entity.Users">
select * from users where id=#{id}
</select>
<!--增加-->
<insert id="save" parameterType="entity.Users">
<!--查询新增用户的ID-->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into users(username,password) values(#{username},#{password})
</insert>
<!--根据ID进行修改-->
<update id="update" parameterType="entity.Users">
update users set username=#{username},password=#{password} where id=#{id}
</update>
<!--根据ID进行删除-->
<delete id="delete" parameterType="entity.Users">
delete from users where id=#{id}
</delete>
<!--模糊查询-->
<select id="findVague" resultType="entity.Users">
-- select * from users where username like '%${value}%'
select * from users where username like #{name}
</select>
<!--查询用户总数-->
<select id="count" resultType="int">
select count(id) from users
</select>
<!--将实体类封装到另一个实体类中的模糊查询-->
<select id="findVo" resultType="entity.Users">
select * from users where username like #{users.username}
</select>
</mapper>
7.UserTest.java
package test;
import dao.UserDao;
import entity.UserVo;
import entity.Users;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserTest {
private InputStream in;
private SqlSession sqlSession;
private UserDao UserDaoImpl;
@Before
public void init() throws IOException {
//1.读取配置文件
in= Resources.getResourceAsStream("SqlMapperConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
//3.使用工厂生产SqlSession对象
sqlSession=factory.openSession();
//4.使用SqlSession创建dao接口的代理对象
UserDaoImpl=sqlSession.getMapper(UserDao.class);
}
@After
public void destroy() throws IOException {
//提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
in.close();
}
/**
* 查询所有
* @throws IOException
*/
@Test
public void findall() throws IOException {
//5.使用代理对象执行方法
List<Users> users=UserDaoImpl.findAll();
for(Users u:users){
System.out.println(u);
}
}
/**
* 增加
*/
@Test
public void save(){
Users users=new Users();
users.setUsername("哈哈哈");
users.setPassword("456");
UserDaoImpl.save(users);
}
/**
* 根据ID查询并修改
*/
@Test
public void update(){
Users u=UserDaoImpl.find(15);
u.setPassword("456");
u.setUsername("小喵");
UserDaoImpl.update(u);
}
/**
* 根据id进行删除
*/
@Test
public void delete(){
UserDaoImpl.delete(16);
}
/**
* 模糊查询,查询所有名字中有小的用户
* @throws IOException
*/
@Test
public void findVague() throws IOException {
//5.使用代理对象执行方法
List<Users> users=UserDaoImpl.findVague("%小%");
for(Users u:users){
System.out.println(u);
}
}
/**
* 查询用户总数
*/
@Test
public void count(){
int c=UserDaoImpl.count();
System.out.println(c);
}
/**
* 将实体类封装到另一个实体类中的模糊查询
*/
@Test
public void findVo(){
UserVo vo=new UserVo();
Users users=new Users();
users.setUsername("%小%");
vo.setUsers(users);
List<Users> list=UserDaoImpl.findVo(vo);
for(Users u:list){
System.out.println(u);
}
}
}
Mybatis学习笔记之---CRUD(增删改查)的更多相关文章
- EF学习笔记-1 EF增删改查
首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...
- mybatis学习(五)——增删改查及自增主键的获取
一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...
- 【JAVAWEB学习笔记】20_增删改查
今天主要是利用三层架构操作数据库进行增删查改操作. 主要是编写代码为主. 附图: 前台和后台 商品的展示 修改商品
- HTML5+ 学习笔记3 storage.增删改查
//插入N条数据 function setItemFun( id ) { //循环插入100调数据 var dataNum = new Number(id); for ( var i=0; i< ...
- Python学习笔记-列表的增删改查
- [学习笔记] Oracle基础增删改查用法
查询 select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from STUDENT.STUINFO t where t.stuname = ...
- Mybatis之基于XML的增删改查
这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...
- SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查
SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查
笔记 2.使用Mybatis注解开发视频列表增删改查 讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句 1.控制台打印sql语句 ...
- python学习之-成员信息增删改查
python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...
随机推荐
- C语言博客作业05
这个作业属于哪个课程 C语言程序设计II 这个作业要求在那里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/9827 我在这个课程的目 ...
- python3.6 使用newspaper库的Article包来快速抓取网页的文章或者新闻等正文
我主要是用了两个方法来抽去正文内容,第一个方法,诸如xpath,css,正则表达式,beautifulsoup来解析新闻页面的时候,总是会遇到这样那样各种奇奇怪怪的问题,让人很头疼.第二个方法是后面标 ...
- ActiveMQ消息过滤
前言 ActiveMQ提供了一种机制,使用它,消息服务可根据消息选择器中的标准来执行消息过滤.生产者可在消息中放入应用程序特有的属性,而消费者可使用基于这些属性的选择标准来表明对消息是否感兴趣.这就简 ...
- Struts2对于BigDecimal类型的转换问题
Struts2对常用的数据类型如String.Integer.Double等都添加了转换器进行对应的转换操作. BigDecimal其实也算作是一种常用的数据类型,但Struts2没有对该类型设置转换 ...
- java 如何读取 properties 配置文件
- InterlliJ idea文件夹里面无法新建java文件等
这两天开始实习,因为公司用的InterlliJ idea作为开发工具,所以我这两天也开始学习如何使用这个.所以想将在操作中遇到的问题做笔记发表到上面来.也方便自己随时查阅,也希望能帮助到正在阅读的你! ...
- Django学习系列2:django环境中安装selenium并查看selenium版本号
在Django环境中安装selenium (django) root@ranxf-TEST:/studydisk/Python_web_TDD/superlists# conda install se ...
- @Autowired与@Resource的区别(转载)
原文地址:http://bhdweb.iteye.com/blog/1663907 1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. ...
- 从位图图像中读取2D纹理(C ++,OpenGL)
一共有2个.cpp文件和1个.h头文件 步骤: 需要安装GLUT,因为GLUT是第三方库,即它不是OpenGL的一部分.因此,它不是Windows系统API的一部分,因此不属于标准Windows SD ...
- 怎么画一条0.5px的边
编者按:本文由人人网FED发表于掘金,并已授权奇舞周刊转载 什么是像素? 像素是屏幕显示最小的单位,在一个1080p的屏幕上,它的像素数量是1920 1080,即横边有1920个像素,而竖边为1080 ...