Spring框架基于注解开发CRUD详解
作者:砖厂打工仔 时间:2021-08-04 03:39:03
Spring框架基于注解开发CRUD,供大家参考,具体内容如下
1. Maven坐标
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!-- SpringJDBC jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!-- spring整合junit jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.0.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- Lombok jar包 -->
<dependency>
<scope>compile</scope>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<!--单元测试jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- mysql数据库jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
2. 实体类
@Data
@Component
//等价于 <bean id="user" class="org.westos.pojo.User"/>
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
3. Spring配置类
用于代替原来的SpringIOC
@Configuration
@ComponentScan(value = "org.westos")
@PropertySource("classpath:jdbcConfig.properties")
public class MyConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
//注入数据源
@Bean("dataSource")
public DataSource createDataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
@Bean("jdbcTemplate")
//注入JDBCtemplate模板
public JdbcTemplate createJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
4. 业务层代码
接口
public interface UserService {
//查询所有用户
List<User> findAll();
//根据id查询用户
User findUserById(Integer uid);
//保存用户
void save(User user);
//更新用户
void update(User user);
//删除用户
void delete(Integer uid);
}
实现类
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
//查询所有用户
public List<User> findAll() {
List<User> list = userDao.findAll();
return list;
}
//根据id查询用户
public User findUserById(Integer uid) {
User user = userDao.findUserById(uid);
return user;
}
//保存用户
public void save(User user) {
userDao.save(user);
}
//更新用户
public void update(User user) {
userDao.update(user);
}
//删除用户
public void delete(Integer uid) {
userDao.delete(uid);
}
}
5. 持久层代码
接口
public interface UserDao {
//查询所有
List<User> findAll();
//根据id查询
User findUserById(Integer uid);
//保存
void save(User user);
//更新
void update(User user);
//删除
void delete(Integer uid);
}
实现类
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
//查询所有
public List<User> findAll() {
return jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<User>(User.class));
}
//根据id查询
public User findUserById(Integer uid) {
return jdbcTemplate.queryForObject("select * from user where id=?", new BeanPropertyRowMapper<User>(User.class), uid);
}
//保存
public void save(User user) {
jdbcTemplate.update("insert into user(username,birthday,sex,address) values (?,?,?,?)", user.getUsername(), user.getBirthday(), user.getSex(), user.getAddress());
}
//更新
public void update(User user) {
jdbcTemplate.update("update user set username=?,birthday=?,sex=?,address=? where id = ?", user.getUsername(), user.getBirthday(), user.getSex(), user.getAddress(), user.getId());
}
//删除
public void delete(Integer uid) {
jdbcTemplate.update("delete from user where id=?", uid);
}
}
6. jdbc配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test
jdbc.username=root
jdbc.password=123
7. 测试类代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyConfig.class)
public class MyTest {
@Autowired
private UserService userService;
@Autowired
private User user;
@Test
public void findAllTest(){
List<User> list = userService.findAll();
for (User user : list) {
System.out.println(user);
}
}
@Test
public void findUserByIdTest(){
User user = userService.findUserById(74);
System.out.println(user);
}
@Test
public void saveUserTest(){
user.setUsername("张三");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("西安市长安区");
userService.save(user);
}
@Test
public void updateUserTest(){
user.setId(75);
user.setUsername("李四");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("西安市雁塔");
userService.update(user);
}
@Test
public void deleteUserTest(){
user.setId(75);
userService.delete(user.getId());
}
}
8. 工程目录
来源:https://blog.csdn.net/weixin_42456748/article/details/109923288
标签:Spring,注解,CRUD
0
投稿
猜你喜欢
使用WebSocket实现即时通讯(一个群聊的聊天室)
2023-11-29 03:00:46
解决Unity无限滚动复用列表的问题
2022-12-26 04:42:18
Android 自定义ProgressDialog进度条对话框用法详解
2022-02-14 19:31:04
java实现超市商品库存管理平台
2022-05-25 10:09:20
详解Java中List的正确的删除方法
2021-09-19 13:20:42
C#模拟实现QQ窗体功能
2021-07-17 02:49:11
一文详解Java Netty中的Constant类
2023-03-03 17:17:55
使用mybatis-plus-generator进行代码自动生成的方法
2021-09-03 00:50:18
详解Java ES多节点任务的高效分发与收集实现
2021-08-03 13:59:02
C语言安全编码之数组索引位的合法范围
2021-12-08 06:09:51
详解Java实现多线程的三种方式
2021-10-30 03:19:16
Spring AOP底层原理及代理模式
2023-05-05 14:19:38
c# 实现雪花分形的示例
2023-05-10 02:59:56
Java concurrency之非公平锁_动力节点Java学院整理
2022-07-31 22:04:37
详解Java实现设计模式之责任链模式
2023-11-08 10:32:07
Android自定义view利用PathEffect实现动态效果
2023-08-17 09:35:00
c#代码生成URL地址的示例
2022-02-17 09:44:08
Java实现图形化界面的日历
2023-03-04 04:07:47
Jmeter对接口测试入参实现MD5加密
2023-08-19 08:59:05
Android实现语音播放与录音功能
2022-01-21 15:39:09