1.Mysql的配置使用
1.新建数据表、数据库
利用可视化界面添加数据 对于主键是唯一标识列,不允许存在相同重复的取值,否则会报错
对于标识列使其自增, 添加auto_increment限制条件,实现标识列的自增
在idea中配置好数据源,实现与数据库的连接。注意实现连接之前要先以管理员身份启动mysql,否则连接失败。
2.Mysql利用sql语句对数据的查询、更新操作
a.查询全部属性列
b.条件查询
c.修改操作
d.插入操作
e.删除操作
3.事务的编写操作
2.案例中的Mybatis基本操作
Mybatis从数据库中查询数据的原理是将数据库中数据表的每个元组封装在实体类中,用实体类的每个成员变量来存储每个字段的数据。因此要在Mybatis实现数据的查询必须先编写对应的实体类User如下:
package com.liuxiaocan.springbootmybatis.data;
import javax.swing.*;
public class User {
private Integer id;
private String name;
private short age;
private short gender;
private String phone;
public User() {
}
public User(Integer id, String name, short age, short gender, String phone) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public short getAge() {
return age;
}
public void setAge(short age) {
this.age = age;
}
public short getGender() {
return gender;
}
public void setGender(short gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name=" + name +
", age=" + age +
", gender=" + gender +
", phone='" + phone + '\'' +
'}';
}
}
在包下新建mapper包,编写UserMapper接口以便于能实现不同的方法体。利用@Mapper注解说明当前接口是Mybatis下的接口,在运行时会自动为该类创建实现类对象,将对象放入IOC容器中。在@Select注解中编写sql语句,实现对数据库数据的操作。
a.查询操作
package com.liuxiaocan.springbootmybatis.mapper;
import com.liuxiaocan.springbootmybatis.data.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User> list();
}
在测试类中从容器中取出实现UserMapper接口的实体类对象,调用实现接口中的方法,实现查询操作。
@SpringBootTest
class SpringbootMybatisApplicationTests {
@Autowired
UserMapper userMapper;
@Test
public void test(){
List<User> test=userMapper.list();
test.stream().forEach(t->{
System.out.println(t);
});
}
}
b.插入操作
@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User> list();
@Insert("insert into user values(#{id},#{name},#{age},#{gender},#{phone})")
public void insert(User user);
@Test
public void test1(){
User user=new User(8,"小龙女",(short) 30,(short) 2,"18800000008");
userMapper.insert(user);
userMapper.list();
}
c.有条件的查询操作
@Select("select * from user where id=#{id}")
public User get(Integer id);
@Test
public void test2(){
Integer i=3;
User user=userMapper.get(i);
System.out.println(user.toString());
}
d.修改操作
@Update("update user set name=#{name} where id=#{id}")
public void update(User user);
@Test
public void test3() {
User user = new User();
user=userMapper.get(3);
user.setName("牛魔王");
userMapper.update(user);
System.out.println(user.toString());
}
e.删除操作
@Delete("delete from user where name=#{name}")
public void delete(String name);
@Test
public void test4(){
String name="牛魔王";
userMapper.delete(name);
test();
3.测试sql语句
在数据库控制台输入sql语句,对于有参数的sql语言可以用?代替参数,在执行过程中再输入参数具体值。
4.lombok库的使用。尝试将实体类采用注解的方式来实现。
通过添加注解的方法可以省略编写set、get方法、构造方法的时间。利用@Data方法可以自动生产get、set方法,利用@AllArgsConstructor注释可以生成含参数的构造方法,利用@NoArgsConstructor可以生成不含参数的构造方法。利用注释的方式也能实现实体类的构造。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private short age;
private short gender;
private String phone;
}
5.学习idea技巧
1.alt+enter 智能提示
2.ctrl+j 提示代码模块
3.ctrl+alt+t 使用什么模块环绕
4.alt+insert 自动生成get、set、构造方法等
5.ctrl+alt+v 自动生成返回值变量
6.ctrl+d 复制指定行的代码
7.ctrl+y 删除指定行的代码
8.shift+enter 切换到下一行代码的空位
9.ctrl+alt+enter 切换到上一行代码空位
10.ctrl+shift+👆/👇 向上向下移动代码 只能在方法内移动
11.alt+shift+👆/👇在整个区域内移动
12.ctrl+p 方法的形参列表提示
13.shift+F6 批量修改方法名、类名、变量名
14.ctrl+alt+m 抽取代码形成方法
15.ctrl+o 重写父类方法
16.ctrl+i 实现接口的方法
17.ctrl+shift+u 大小写转换
18.ctrl+alt+o 批量导入包
19.ctrl+鼠标 显示源代码
20.alt+👈/👉 打开的源文件之间的切换
21.ctrl+alt+u 生成类的关系图
22.ctrl+g 定位到某一行
23.ctrl+alt+b 追溯类或者方法的来源
24.ctrl+f 查找指定的结构
25.断点调试
行断点:
方法断点:
异常断点:
6.对poet案例使用mybatis进行添加、删除、修改、更新的操作
首先,新建一个诗人poet表格,输入诗人信息,同时编写对应的实体类Poet用于存储数据库中的数据。
package com.liuxiaocan.springbootmybatis.data;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Poet {
private short id;
private String name;
private String gender;
private String dynasty;
private String title;
private String style;
}
编写PoetMapper接口,在接口内编写sql语句实现对poet数据表的查询。
@Mapper
public interface PoetMapper {
@Select("select * from poet")
public List<Poet> selectall();
}
@SpringBootTest
class SpringbootMybatisApplicationTests {
@Autowired
PoetMapper poetMapper;
@Test
public void test1(){
List<Poet> poets=poetMapper.selectall();
for (Poet poet:poets
) {
System.out.println(poet);
}
}
}
插入操作
@Insert("insert into poet values(#{id},#{name},#{gender},#{dynasty},#{title},#{style})")
public void insert(Poet poet);
@Test
public void test2(){
Poet poet=new Poet((short) 8,"陆游","男","宋代","小李白","语言平易晓畅章法整饬谨严");
poetMapper.insert(poet);
test1();
有条件的查询操作 ,可以先在数据库控制台检验select语句是否正确
@Select("select * from poet where id=#{id}")
public List<Poet> selectpart(short id);
@Test
public void test3(){
List<Poet> poets=poetMapper.selectpart((short) 5);
for (Poet poet:poets
) {
System.out.println(poet);
}
}
修改操作
@Update("update poet set gender=#{gender} where id=#{id}")
public void update(String gender,short id);
@Test
public void test4(){
poetMapper.update("男",(short) 4);
test1();
}
删除操作
@Delete("delete from poet where name=#{name}")
public void delete(String name);
@Test
public void test5(){
poetMapper.delete("陆游");
test1();
}