Mybatis快速入门(4)Mybatis与Spring整合(增删改查)以及逆向工程

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

order:指定selectKey何时执行:AFTER之后

–>

INSERT INTO user

(username,

birthday,

sex,

address)

VALUES (#{username},

#{birthday},

#{sex},

#{address});

b、创建User对象

在这里插入图片描述

package com.itzheng.mybatis.pojo;

import java.util.Date;

public class User {

private Integer id;

private String username;// 用户姓名

private String sex;// 性别

private Date birthday;// 生日

private String address;// 地址

private String uuid2;

public String getUuid2() {

return uuid2;

}

public void setUuid2(String uuid2) {

this.uuid2 = uuid2;

}

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 getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

@Override

public String toString() {

return “User [id=” + id + “, username=” + username + “, sex=” + sex + “, birthday=” + birthday + “, address=”

  • address + “, uuid2=” + uuid2 + “]”;

}

}

c、创建Order类

在这里插入图片描述

package com.itzheng.mybatis.pojo;

import java.util.Date;

public class Order {

private Integer id;

private Integer userId;

private String number;

private Date createtime;

private String note;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getUserId() {

return userId;

}

public void setUserId(Integer userId) {

this.userId = userId;

}

public String getNumber() {

return number;

}

public void setNumber(String number) {

this.number = number == null ? null : number.trim();

}

public Date getCreatetime() {

return createtime;

}

public void setCreatetime(Date createtime) {

this.createtime = createtime;

}

public String getNote() {

return note;

}

public void setNote(String note) {

this.note = note == null ? null : note.trim();

}

@Override

public String toString() {

return “Order [id=” + id + “, userId=” + userId + “, number=” + number + “, createtime=” + createtime

  • “, note=” + note + “]”;

}

}

d、创建UserDao接口

package com.itzheng.mybatis.dao;

import java.util.List;

import com.itzheng.mybatis.pojo.User;

public interface UserDao {

// 根据用户ID查询用户信息

/*

  • 用户信息持化接口

*/

User getUserById(Integer id);

// 根据用户名查找用户列表

List getUserByUserName(String userName);

// 添加用户

void insertUser(User user);

}

e、创建UserDao接口的实现类

在这里插入图片描述

在这里插入图片描述

package com.itzheng.mybatis.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import com.itzheng.mybatis.dao.UserDao;

import com.itzheng.mybatis.pojo.User;

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

@Override

public User getUserById(Integer id) {

SqlSession sqlSession = super.getSqlSession();

User user = sqlSession.selectOne(“user.getUserById”,id);

//千万不能关闭sqlsession

//sqlSession.close();

return user;

}

@Override

public List getUserByUserName(String userName) {

SqlSession sqlSession = super.getSqlSession();

List list = sqlSession.selectList(“user.getUserByUserName”,userName);

return list;

}

@Override

public void insertUser(User user) {

SqlSession sqlSession = super.getSqlSession();

sqlSession.insert(“user.insertUser”,user);

}

}

f、在spring的配置文件applicationContext.xml当中配置dao的实现

在这里插入图片描述

g、完善SqlMapConfig.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
6. 创建单元测试

package com.itzheng.mybatis.test;

import static org.junit.Assert.fail;

import org.junit.Before;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.itzheng.mybatis.dao.UserDao;

import com.itzheng.mybatis.pojo.User;

public class UserDaoTest {

private ApplicationContext applicationContext;

@Before

public void init() {

applicationContext = new ClassPathXmlApplicationContext(“classpath:applicationContext.xml”);

}

@Test

public void testGetUserById() {

UserDao userDao = applicationContext.getBean(UserDao.class);

User user = userDao.getUserById(30);

System.out.println(user);

}

}

在这里插入图片描述

一、动态代理


方式一:

1. 创建mapper包和UserMapper.java和UserMapper.xml
(1)UserMapper.java

在这里插入图片描述

package com.itzheng.mybatis.mapper;

import java.util.List;

import com.itzheng.mybatis.pojo.User;

public interface UserMapper {

// 根据用户ID查询用户信息

/*

  • 用户信息持化接口

*/

User getUserByid(Integer id);

// 根据用户名查找用户列表

List getUserByUserName(String userName);

// 添加用户

void insertUser(User user);

}

(2)UserMapper.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>

id,

username,

birthday,

sex,

address

SELECT

FROM

USER WHERE id = #{id1}

SELECT

FROM user WHERE username LIKE

‘%${value}%’

INSERT INTO USER

(

username,

birthday,

sex,

address)

VALUES (

#{username},

#{birthday},

#{sex},

#{address});

2. applicationContext.xml

在这里插入图片描述

3、创建单元测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package com.itzheng.mybatis.test;

import static org.junit.Assert.*;

import org.junit.Before;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.itzheng.mybatis.mapper.UserMapper;

import com.itzheng.mybatis.pojo.User;

public class UserMapperTest {

private ApplicationContext applicationContext;

@Before

public void init() {

applicationContext = new ClassPathXmlApplicationContext(“classpath:applicationContext.xml”);

}

@Test

public void testGetUserByid() {

UserMapper userMapper = applicationContext.getBean(UserMapper.class);

User user = userMapper.getUserByid(30);

System.out.println(user);

}

@Test

public void testGetUserByUserName() {

fail(“Not yet implemented”);

}

@Test

public void testInsertUser() {

fail(“Not yet implemented”);

}

}

运行测试代码

在这里插入图片描述

方式二:包扫描

1、修改applicationContext.xml

在这里插入图片描述

2、运行测试代码

在这里插入图片描述

三、逆向工程


源代码下载:

https://pan.baidu.com/s/1czwasu

密码: nc9w

1、导入逆行工程代码

在这里插入图片描述

2、修改generatorConfig.xml
(1)数据库连接的信息:驱动类、连接地址、用户名、密码

在这里插入图片描述

<jdbcConnection driverClass=“com.mysql.jdbc.Driver”

connectionURL=“jdbc:mysql://localhost:3306/mybatis” userId=“root”

password=“root”>

(2)targetProject:生成PO类的位置

在这里插入图片描述

<javaModelGenerator targetPackage=“com.itzheng.ssm.po”

targetProject=“.\src”>

(3)targetProject:mapper映射文件生成的位置

在这里插入图片描述

<sqlMapGenerator targetPackage=“com.itzheng.ssm.mapper”

targetProject=“.\src”>

(4)targetPackage:mapper接口生成的位置

在这里插入图片描述

<javaClientGenerator type=“XMLMAPPER”

targetPackage=“com.itzheng.ssm.mapper”

targetProject=“.\src”>

(5)指定数据库表

在这里插入图片描述

(6)运行项目

在这里插入图片描述

生成对应的代码

在这里插入图片描述

3、实现功能
(1)将生成的项目复制到mybatis-srping当中

在这里插入图片描述

(2)applicationContext.xml当中配置包扫描

在这里插入图片描述

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzU3MDM0,size_16,color_FFFFFF,t_70)

(2)applicationContext.xml当中配置包扫描

在这里插入图片描述

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

[外链图片转存中…(img-qTb7T6Wh-1714708410996)]

[外链图片转存中…(img-9p0vyZ1H-1714708410997)]

更多笔记分享

[外链图片转存中…(img-3OB8SaQ6-1714708410997)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值