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.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis_testjdbc.username=rootjdbc.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

以上就是“Spring框架基于注解怎么开发CRUD”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

文章标题:Spring框架基于注解怎么开发CRUD,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/20909

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年8月27日 下午4:42
下一篇 2022年8月27日 下午4:51

相关推荐

  • windows是否只查看安全传送的网页内容如何关闭

    是否只查看安全传送的网页内容关闭方法: 1、首先打开浏览器,然后点击任务栏中的“工具”。 2、之后点击下拉菜单中的“Internet选项”。 3、再点击选项窗口中的“安全”。 4、接着去点击下面的“自定义级别”。 5、下拉找到“显示混合内容”。 6、勾选下面的“启动”。 7、最后点击确定即可。 以上…

    2022年8月31日
    68900
  • program files可不可以删除

    “program files”不可以删除;“program files”文件夹是windows系统的程序文件夹,在系统安装完成后就已经生成,该文件夹用于存放已经安装的应用程序,位于C盘根目录,如果删除可能会导致系统运行的不稳定,导致操作系统的崩溃。 本教程操作环境:windows10系统、DELL …

    2022年9月10日
    1.2K00
  • ​CSS3中calc()如何使用

    CSS3 calc() 的使用 calc() 用法类似于函数,能够给元素设置动态的值: /* basic calc */.simpleBlock { width: calc(100% – 100px);}/* calc in calc */.complexBlock { width: calc(10…

    2022年9月1日
    40100
  • jquery动画队列怎么实现

    jquery动画队列是一个动画函数队列,把多个的动画任务放到一起,确保只有当前面的任务完成了,才会开始下一个任务;可以对jQuery元素应用fade、slide、animate等动画,当在JQuery对象上调用动画方法时,如果对象正在执行某个动画效果,那么会把后面的动画效果,放在一个队列里面,然后按…

    2022年9月10日
    58500
  • windows pcstory常见问题怎么解决

    pcstory是什么 答:pcstory是一款游戏下载软件。 1、其中有着大量的优异正版单机游戏可以下载,各种游戏应有尽有。 2、而且软件有着优异的下载通道,即使上百GB的游戏也能很快下载。 3、软件还自带了游戏管理服务,可以移动、卸载在这里下载到的游戏。 4、此外,pcstory还拥有免费更新功能…

    2022年9月20日
    2.1K00
  • 路由器wps有哪些优缺点

    路由器wps是“Wi-Fi安全防护设置”的意思;wps是“Wi-Fi Protected Setup”的简称,是由“Wi-Fi”联盟所推出的全新“Wi-Fi”安全防护设定标准,用于简化“Wi-Fi”无线的安全设置和网络管理,支持个人识别码模式和按钮模式。 本教程操作环境:windows10系统、DE…

    2022年9月6日
    79100
  • Python怎么实现Web服务器FastAPI

    1、简介 FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python类型提示。 关键特性: 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。非常快的 Python w…

    2022年9月24日
    1.2K00
  • mysql如何将值转换为二进制

    3种转换方法:1、使用BIN()函数,可以返回指定数字的二进制值的字符串表示形式,语法“BIN(number)”,参数“number”是一个长整型(BIGINT)数。2、使用CONV()函数,可将一个进制转为另一个进制,语法“CONV(number,10,2)”,能返回指定数字的二进制值。3、使用B…

    2022年9月26日
    1.0K00
  • 如何解决mysql服务无法启动1069

    解决mysql服务无法启动的1069错误方法:1、在管理用户中找到mysql用户并重新设置mysql密码;2、在服务中找到mysql服务选项,在属性中通过更改后的密码重新登录mysql服务即可。出现1069错误的原因是更改了服务器的登录密码。 本教程操作环境:windows10系统、mysql8.0…

    2022年9月5日
    69300
  • word字体放大如何弄

    word字体放大的方法 1、先选中需要放大的字体,然后点击开始菜单中的增大字号。 2、选中字体之后在悬浮框中点击字体大小就可以设置了。 3、选中需要放大的字体之后,点击上方菜单栏中的输入框,直接在里面输入你要的字号。 以上就是“word字体放大如何弄”这篇文章的所有内容,感谢各位的阅读!相信大家阅读…

    2022年9月10日
    51200
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部