这篇文章主要为大家详细介绍了Spring框架基于注解开发CRUD,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
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. 工程目录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:Spring框架基于注解开发CRUD详解
猜你喜欢
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01