INSERT INTO `student` (`id`,`name`,`tid`) VALUES('1','xiaohong','1'); INSERT INTO `student` (`id`,`name`,`tid`) VALUES('2','xiaoming','1'); INSERT INTO `student` (`id`,`name`,`tid`) VALUES('3','xiaozhang','1'); INSERT INTO `student` (`id`,`name`,`tid`) VALUES('4','xiaoli','1'); INSERT INTO `student` (`id`,`name`,`tid`) VALUES('5','xiaowang','1');
SELECt * FROM student
CREATE TABLE `blog` ( `id` VARCHAr(50) NOT NULL COMMENT '博客id', `title` VARCHAr(100) NOT NULL COMMENT '博客标题', `author` VARCHAr(30) NOT NULL COMMENT '博客作者', `create_time` DATETIME NOT NULL COMMENT '创建时间', `views` INT(30) NOT NULL COMMENT '浏览量' )ENGINE=INNODB DEFAULT CHARSET=utf8
//@Data通过lombok插件实现(里面主要是get,set,tostring方法等:建议还是写方法不要通过注释来实现)
@Data
@AllArgsConstructor //实现有参构造方法
@NoArgsConstructor //实现无参构造方法
public class User {
private int id;
private String name;
private String pwd;
}
UserMapper接口
public interface UserMapper {
//查询所有
List getUserAll();
//根据id查询
User getUserId(int id);
//模糊查询
List getUserLike(String values);
//添加
int getUserInsert(User user);
//修改
int getUserUpdate(User user);
//删除
int getUserDelete(int id);
//万能的Map(用添加的来演示)
int getUserMap(Map map);
//为一级缓存和二级缓存演示,看完之后再看这个
User getUserByIdCache(@Param("id") int id);
int getUserUpdateCache(User user);
}
UserMapper.xml文件
5.测试(创建一个Test类用来测试)
MybatisTest
/测试查询所有
//测试根据id查询
//测试模糊查询
//测试添加
//测试修改
//测试删除
//万能的Map
@Test
public void TestAll(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userAll = mapper.getUserAll();
for (User user : userAll) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void TestId(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userId = mapper.getUserId(1);
System.out.println(userId);
sqlSession.close();
}
@Test
public void TestUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userLike = mapper.getUserLike("姜");
for (User user : userLike) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void TestInsert(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(5);
user.setName("admin");
user.setPwd("123456");
int userInsert = mapper.getUserInsert(user);
if (userInsert>0){
System.out.println("更新成功");
}
sqlSession.close();
}
@Test
public void TestUpdate(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int userUpdate = mapper.getUserUpdate(new User(5, "jw", "jy"));
if (userUpdate>0){
System.out.println("更新成功");
}
sqlSession.close();
}
@Test
public void TestDelete(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int userDelete = mapper.getUserDelete(5);
if (userDelete>0){
System.out.println("删除成功");
}
sqlSession.close();
}
@Test
public void TestMap(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap map = new HashMap<>();
map.put("uid",5);
map.put("uname","jw");
map.put("pwd","jy");
int userMap = mapper.getUserMap(map);
if (userMap>0){
System.out.println("插入成功");
}
sqlSession.close();
}
6.创建Student,Teacher两个实体类(用于一对多和多对一演示)
Student Teacher
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private int id;
private String name;
//多对一
private Teacher teacher;
//一对多
private int tid;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
private int id;
private String name;
//一对多
private List students;
}
7.创建StudentMapper,TeacherMapper接口
StudentMapper
public interface StudentMapper {
//一对多查询所有
List getStudentName();
}
TeacherMapper
public interface TeacherMapper {
//一对多
Teacher getTeacherStudent(int id);
}
8.创建编写StrudentMapper.xml,TeacherMapper.xml文件
StrudentMapper.xml
select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid=t.id
TeacherMapper.xml
select t.id tid,t.name tname,s.id sid,s.name sname from teacher t,student s where t.id=s.tid and t.id=#{tid}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Blog {
//改实体类主要用于动态sql演示
private String id;
private String title;
private String author;
private Date createTime;
private int views;
}
11.创建对应的BlogMapper接口及BlogMapper.xml文件
BlogMapper
public interface BlogMapper {
//添加
int getAddBlog(Blog blog);
//查询用动态sql的if
List getBlogIf(Map map);
//查询用动态sql的Choose
List getBlogChoose(Map map);
//更新
int getBlogUpdate(Map map);
//查询用动态sql的Foreach
List getBlogForeach(Map map);
}
BlogMapper.xml
insert into blog (id,title,author,create_time,views)
values(#{id},#{title},#{author},#{createTime},#{views});
and title = #{title}
and author =#{author}
select * from blog where 1=1
select * from blog
title = #{title}
and author=#{author}
views=#{views}
update blog
title=#{title},
author=#{author}
where id=#{id}
select * from blog
id=#{id}
12.创建IDutils工具类(主要是随机产生一个id,也可以不用使用,直接设置id)
IDutils
public class IDutils {
//产生一个随机数
public static String getId(){
return UUID.randomUUID().toString().replaceAll("-","");
}
//测试随机数是否产生
@Test
public void test(){
System.out.println(IDutils.getId());
}
}
13.测试
//动态sql测试演示
@Test
public void addInitBlog(){
SqlSession session = MybatisUtils.getSqlSession();
BlogMapper mapper = session.getMapper(BlogMapper.class);
//IDutils.getId()利用IDutils工具类调用getId方法产生一个随机id
Blog blog = new Blog();
blog.setId(IDutils.getId());
blog.setTitle("Mybatis好简单");
blog.setAuthor("jw说");
blog.setCreateTime(new Date());
blog.setViews(9999);
mapper.getAddBlog(blog);
blog.setId(IDutils.getId());
blog.setTitle("Java好简单");
mapper.getAddBlog(blog);
blog.setId(IDutils.getId());
blog.setTitle("Spring好简单");
mapper.getAddBlog(blog);
blog.setId(IDutils.getId());
blog.setTitle("SpringBoot好简单");
mapper.getAddBlog(blog);
session.close();
}
@Test
public void testIf(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
HashMap map = new HashMap();
// map.put("title","java好此简单");
map.put("author","jw说");
List blogs = mapper.getBlogIf(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
@Test
public void testChoose(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
HashMap map = new HashMap();
map.put("views",9999);
List blogs = mapper.getBlogChoose(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
@Test
public void testUpdate(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
HashMap map = new HashMap();
map.put("id","9621c42c1d2f4f3cbf1b3a0d47bb2dbb");
map.put("title","Java好简单");
map.put("author","jw");
mapper.getBlogUpdate(map);
sqlSession.close();
}
@Test
public void testForeach(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
HashMap map = new HashMap();
ArrayList list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
map.put("list",list);
List blogForeach = mapper.getBlogForeach(map);
for (Blog foreach : blogForeach) {
System.out.println(foreach);
}
sqlSession.close();
}