最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring框架基于注解開發(fā)CRUD詳解

 更新時(shí)間:2022年08月26日 11:23:06   作者:磚廠打工仔  
這篇文章主要為大家詳細(xì)介紹了Spring框架基于注解開發(fā)CRUD,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Spring框架基于注解開發(fā)CRUD,供大家參考,具體內(nèi)容如下

1. Maven坐標(biāo)

<!-- 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>
<!--單元測(cè)試jar包-->
<dependency>
? ? <groupId>junit</groupId>
? ? <artifactId>junit</artifactId>
? ? <version>4.12</version>
</dependency>
<!-- mysql數(shù)據(jù)庫(kù)jar包 -->
<dependency>
? ? <groupId>mysql</groupId>
? ? <artifactId>mysql-connector-java</artifactId>
? ? <version>5.1.6</version>
? ? <scope>runtime</scope>
</dependency>

2. 實(shí)體類

@Data
@Component
//等價(jià)于 <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;

? ? //注入數(shù)據(jù)源
? ? @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. 業(yè)務(wù)層代碼

接口

public interface UserService {
? ? //查詢所有用戶
? ? List<User> findAll();

? ? //根據(jù)id查詢用戶
? ? User findUserById(Integer uid);

? ? //保存用戶
? ? void save(User user);

? ? //更新用戶
? ? void update(User user);

? ? //刪除用戶
? ? void delete(Integer uid);
}

實(shí)現(xiàn)類

@Service("userService")
public class UserServiceImpl implements UserService {
? ? @Autowired
? ? private UserDao userDao;

? ? //查詢所有用戶
? ? public List<User> findAll() {
? ? ? ? List<User> list = userDao.findAll();
? ? ? ? return list;
? ? }

? ? //根據(jù)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();

? ? //根據(jù)id查詢
? ? User findUserById(Integer uid);

? ? //保存
? ? void save(User user);

? ? //更新
? ? void update(User user);

? ? //刪除
? ? void delete(Integer uid);
}

實(shí)現(xiàn)類

@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));
? ? }

? ? //根據(jù)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. 測(cè)試類代碼

@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("西安市長(zhǎng)安區(qū)");
? ? ? ? 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. 工程目錄

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)復(fù)原IP地址的方法

    Java實(shí)現(xiàn)復(fù)原IP地址的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)復(fù)原IP地址的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • hadoop上傳文件功能實(shí)例代碼

    hadoop上傳文件功能實(shí)例代碼

    這篇文章主要介紹了hadoop上傳文件功能實(shí)例代碼,需要的朋友可以參考下
    2017-09-09
  • IDEA集成DeepSeek的詳細(xì)教程(保姆級(jí)教程)

    IDEA集成DeepSeek的詳細(xì)教程(保姆級(jí)教程)

    DeepSeek作為一款強(qiáng)大的代碼搜索和分析工具,能夠幫助開發(fā)者快速定位代碼、理解項(xiàng)目結(jié)構(gòu)以及優(yōu)化代碼質(zhì)量,本文將詳細(xì)介紹如何在IntelliJ?IDEA中集成DeepSeek,并展示如何利用它來提升開發(fā)效率,感興趣的朋友一起看看吧
    2025-02-02
  • Spring純注解開發(fā)模式讓開發(fā)簡(jiǎn)化更簡(jiǎn)化

    Spring純注解開發(fā)模式讓開發(fā)簡(jiǎn)化更簡(jiǎn)化

    Spring3.0引入了純注解開發(fā)的模式,框架的誕生是為了簡(jiǎn)化開發(fā),那注解開發(fā)就是簡(jiǎn)化再簡(jiǎn)化。Spring的特性在整合MyBatis方面體現(xiàn)的淋漓盡致哦
    2022-08-08
  • Java中一維二維數(shù)組的靜態(tài)和動(dòng)態(tài)初始化

    Java中一維二維數(shù)組的靜態(tài)和動(dòng)態(tài)初始化

    今天通過本文給大家分享Java中的數(shù)組,包括一維數(shù)組和二維數(shù)組的靜態(tài)初始化和動(dòng)態(tài)初始化問題,感興趣的朋友一起看看吧
    2017-10-10
  • 淺談springBean的作用域

    淺談springBean的作用域

    本文主要介紹了淺談springBean的作用域,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Java并發(fā)編程之CountDownLatch的使用

    Java并發(fā)編程之CountDownLatch的使用

    CountDownLatch是一個(gè)倒數(shù)的同步器,常用來讓一個(gè)線程等待其他N個(gè)線程執(zhí)行完成再繼續(xù)向下執(zhí)行,本文主要介紹了CountDownLatch的具體使用方法,感興趣的可以了解一下
    2023-05-05
  • 淺析Java中的WeakHashMap

    淺析Java中的WeakHashMap

    這篇文章主要介紹了淺析Java中的WeakHashMap,WeakHashMap其實(shí)和HashMap大多數(shù)行為是一樣的,只是WeakHashMap不會(huì)阻止GC回收key對(duì)象,那么WeakHashMap是怎么做到的呢,這就是我們研究的主要問題,需要的朋友可以參考下
    2023-09-09
  • 如何解決java:錯(cuò)誤:無效的源發(fā)行版:16

    如何解決java:錯(cuò)誤:無效的源發(fā)行版:16

    這篇文章主要介紹了如何解決java:錯(cuò)誤: 無效的源發(fā)行版:16問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • quartz定時(shí)執(zhí)行任務(wù),并配置web.xml的操作方法

    quartz定時(shí)執(zhí)行任務(wù),并配置web.xml的操作方法

    下面小編就為大家?guī)硪黄猶uartz定時(shí)執(zhí)行任務(wù),并配置web.xml的操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07

最新評(píng)論

阿尔山市| 丁青县| 宣威市| 安化县| 南丹县| 高清| 汉沽区| 台北市| 江华| 湟源县| 乌审旗| 彰化市| 武胜县| 商都县| 壤塘县| 丰原市| 滕州市| 昌图县| 上犹县| 友谊县| 泸溪县| 清涧县| 忻州市| 葫芦岛市| 长兴县| 西充县| 射阳县| 吉首市| 合阳县| 莫力| 前郭尔| 察哈| 郯城县| 中阳县| 滦南县| 澄江县| 旬邑县| 汝阳县| 新民市| 温宿县| 潮州市|