1.idea中配置数据库
2.mybatis——查询,删除,修改,新增操作
UserMapper——接口中定义查询,删除,修改,新增操作
@Mapper//运行时自动生成代理实现类(会实现sql的方法)并创建对象,然后将对象交给IOC容器管理
public interface UserMapper {
//查询所有数据
@Select("select * from user" )
public List<User> list();
//删除id是某个值的数据
@Select("delete from user where id=#{id}")//#{id}用于参数绑定
public void delete(int id);
//插入一条用户信息
@Select("insert into user(name, age, gender, phone) values (#{name},#{age},#{gender},#{phone})")
public void insert(User user);
//修改id为**的用户名
@Select("update user set name=#{name} where id=#{id}")
public void update(User user);
//查询id为#的用户信息
@Select("select * from user where id= #{id} ")
public User get(int id);
}
SpringbootMybatisQuickstartApplicationTest——test测试语句
package edu.wust.springbootmybatisquickstart;
import edu.wust.springbootmybatisquickstart.mapper.UserMapper;
import edu.wust.springbootmybatisquickstart.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class SpringbootMybatisQuickstartApplicationTests {
@Autowired
private UserMapper usermapper;
//stream查询所有数据
@Test
public void testListUser(){
List<User> l = usermapper.list();
//stream可用来处理list集合将其转化为一个流,forEach方法处理流中的每个元素(命名为user)
l.stream().forEach(user -> {
System.out.println(user.getId()+","+user.getName()+","+user.getAge()+","+user.getGender()+","+user.getPhone());
});
}
//for循环查询所有数据
@Test
public void listAll(){
List<User> l=usermapper.list();
for(User user :l){
System.out.print(user.getId()+",");
System.out.print(user.getName()+",");
System.out.print(user.getAge()+",");
System.out.print(user.getGender()+",");
System.out.println(user.getPhone());
}
}
//修改id为8的user的姓名
@Test
public void update(){
List<User> l=usermapper.list();
User C=l.get(2);//通过索引获取list集合中第3个元素(index索引是2)
C.setName("lion");
usermapper.update(C);
listAll();
}
//获取id为8的元素
@Test
public void get(){
usermapper.get(8);
listAll();
}
//删除id为8的元素
@Test
public void delete(){
usermapper.delete(8);
listAll();
}
//插入元素
@Test
public void insert(){
User c=new User(7,"tony",(short)55,(short)2,"123334");//有参构造
usermapper.insert(c);
//无参构造
User b=new User();
b.setName("Jone");
b.setAge((short)24);
b.setGender((short)1);
b.setPhone("92819839");
usermapper.insert(b);
listAll();
}
}
3.idea的sql 控制台,测试sql语句
?代替参数
select id,name,gender,age,phone from user;
insert into user(name, age, gender, phone) values (?,?,?,?);
delete from user where id=?;
update user set name=? where id=?;
4、lombok库的使用,尝试将实体类采用注解的方式来实现。
User类
package edu.wust.springbootmybatisquickstart.pojo;
import lombok.*;
/*
@Getter
@Setter
@ToString
@EqualsAndHashCode
*/
@Data//包含以上四个注解
@NoArgsConstructor//无参构造
@AllArgsConstructor//全参构造
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
}
5.学习idea的调试技巧
行断点
方法断点
字段断点
条件断点
异常断点
6、对以下案例使用mybatis进行添加、删除、修改、更新的操作。(不需要实现页面,test中控制台能输出结果就行。)
step1:sql创建表
create table writer(
id int unsigned primary key auto_increment comment 'ID',
name varchar(3) comment '姓名',
gender char comment '性别',
dynasty varchar(10) comment '朝代',
title varchar(15) comment '头衔',
style varchar(20) comment '风格'
) comment '诗人信息';
step2:添加信息
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'陶渊明','男','东晋末至南朝宋初期','诗人和辞赋家','古今隐逸诗人之宗');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'王维','男','唐代','诗佛','空灵、寂静');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'李白','男','唐代','诗仙','豪放飘逸的诗风和丰富的想象力');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'李商隐','女','唐代','诗坛鬼才','无');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'李清照','女','宋代','女词人','婉约风格');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'杜甫','男','唐代','诗圣','反映社会现实和人民疾苦');
insert into writer(id, name, gender, dynasty,title,style) VALUES (null,'苏轼','男','北宋','文学家、书画家,诗神','清新豪健的诗风和独特的艺术表现力');
step3:mybatis实现对表信息的添加,删除,修改更新
实体类Writer.java
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Writer {
private Integer id;
private String name;
private char gender;
private String dynasty;
private String title;
private String style;
}
WriterMapper接口
package edu.wust.springbootmybatisquickstart.mapper;
import edu.wust.springbootmybatisquickstart.pojo.User;
import edu.wust.springbootmybatisquickstart.pojo.Writer;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface WriterMapper {
//查询id为#诗人信息
@Select("select * from user where id= #{id} ")
public User get(int id);
//查询所有数据
@Select("select * from writer")
public List<Writer> list();
//删除id是某个值的数据
@Select("delete from user where id=#{id}")
public void delete(int id);
//插入一条诗人信息
@Select("insert into writer(name,gender,dynasty,title,style) values (#{name},#{gender},#{dynasty},#{title},#{style})")
public void insert(Writer writer);
//修改id为**的诗人姓名
@Select("update Writer set name=#{name} where id=#{id}")
public void update(Writer writer);
}
mybatis实现操作
@SpringBootTest
class SpringbootMybatisQuickstartApplicationTests {
@Autowired
private WriterMapper writerMapper;
@Test
public void listAll(){
List<Writer> l=writerMapper.list();
for(Writer writer :l){
System.out.print(writer.getId()+",");
System.out.print(writer.getName()+",");
System.out.print(writer.getGender()+",");
System.out.print(writer.getDynasty()+",");
System.out.print(writer.getTitle()+",");
System.out.println(writer.getStyle());
}
}
@Test
public void insert() {
Writer c = new Writer(8,"骆宾王", '男', "唐代", "初唐四杰之一", "以五言律诗见长");//有参构造
writerMapper.insert(c);
listAll();
}
//修改id为8的user的姓名
@Test
public void update(){
List<Writer> l=writerMapper.list();
Writer C=l.get(7);
C.setName("luo");
writerMapper.update(C);
listAll();
}
//删除id为10的元素
@Test
public void delete(){
writerMapper.delete(10);
listAll();
}
}
实现结果
插入
修改
删除