1.pom 依存関係を追加します
<!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> org.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-java5.1.42
2. データソース構成を追加します (DataSource、Spring Boot が自動的に挿入する一連のオブジェクトです。構成を構成するだけです!)
spring.datasource.url=jdbc:mysql:spring.datasource.username==123456--name=-wait=10000-active=300-on-borrow=-size=20
#=====================jpa config================================ #实体类维护数据库表结构的具体行为:update/create/create-drop/validate/none spring.jpa.hibernate.ddl-auto=none #打印sql语句 spring.jpa.show-sql=true #格式化输出的json字符串 spring.jackson.serialization.indent_output=true
3.新しいエンティティ
@Entity @Table(name="user")public class User { @Id @Column(name="id") @GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id; @Column(name="number")private String number; @Column(name="name")private String name;public Integer getId() {return id; }public void setId(Integer id) {this.id = id; }public String getNumber() {return number; }public void setNumber(String number) {this.number = number; }public String getName() {return name; }public void setName(String name) {this.name = name; } }
4.daoレイヤー
public interface UserDao{ User getById(int id); User getByNumber(String number);int addUser(User user);void deleteUserById(int id); User updateUser(User user); }
@Repositorypublic class UserDaoImpl implements UserDao { @PersistenceContextprivate EntityManager entityManager; @Overridepublic User getById(int id) {//find by primary keyreturn this.entityManager.find(User.class,id); } @Overridepublic User getByNumber(String number) { Query query = this.entityManager.createQuery("from User u where u.number=:number",User.class); query.setParameter("number",number); User user = (User)query.getSingleResult();return user; } @Overridepublic int addUser(User user) {this.entityManager.persist(user);//print the id System.out.println(user.getId());return user.getId(); } @Overridepublic void deleteUserById(int id) { User user = this.entityManager.find(User.class,id); //关联到记录,方可删除this.entityManager.remove(user); } @Overridepublic User updateUser(User user) { User userNew = this.entityManager.merge(user);return userNew; } }
5.サービスレイヤー
public interface UserService { User getById(int id); User getByNumber(String number);int addUser(User user,boolean throwEx);void deleteUserById(int id); User updateUser(User user); }
@Service @Transactionalpublic class UserServiceImpl implements UserService { @Autowiredprivate UserDao userDao; @Override @Transactional(readOnly = true)public User getById(int id) {return userDao.getById(id); } @Override @Transactional(readOnly = true)public User getByNumber(String number) {return userDao.getByNumber(number); } @Overridepublic int addUser(User user,boolean throwEx) {int id= this.userDao.addUser(user);if(throwEx){throw new RuntimeException("throw a ex"); }return id; } @Overridepublic void deleteUserById(int id) {this.userDao.deleteUserById(id); } @Overridepublic User updateUser(User user) {return this.userDao.updateUser(user); } }
6.コントローラー層
@Controller("user1") @RequestMapping("/jpa/user")public class UserController {/** * 日志(slf4j->logback) */private static final Logger logger = LoggerFactory.getLogger(UserController.class); @Autowiredprivate UserService userService;/** * 返回text格式数据 * @param id 主键id * @return 用户json字符串 */@RequestMapping("/get/id/{id}") @ResponseBodypublic String getUserById(@PathVariable("id")String id){ logger.info("request /user/get/id/{id}, parameter is "+id); User user = userService.getById(Integer.parseInt(id));return JSONObject.toJSONString(user); }/** * 返回json格式数据 * @param number 编号 * @return 用户 */@RequestMapping("/get/number/{number}") @ResponseBodypublic User getUserByNumber(@PathVariable("number")String number){ User user = userService.getByNumber(number);return user; } @RequestMapping("/add/{number}/{name}") @ResponseBodypublic String addUser(@PathVariable("number")String number,@PathVariable("name")String name,boolean throwEx){ User user = new User(); user.setNumber(number); user.setName(name);int id = -1;try{ id = userService.addUser(user,throwEx); }catch (RuntimeException ex){ System.out.println(ex.getMessage()); }return String.valueOf(id); } @RequestMapping("/delete/{id}") @ResponseBodypublic void getUserById(@PathVariable("id")int id){this.userService.deleteUserById(id); } @RequestMapping("/update/{id}/{number}/{name}") @ResponseBodypublic User addUser(@PathVariable("id")int id, @PathVariable("number")String number, @PathVariable("name")String name){ User user = new User(); user.setId(id); user.setNumber(number); user.setName(name);return userService.updateUser(user); } }
7. Spring Data jpa を使用する新しい方法、より高度な
1.dao @Repositorypublic interface UserRepository extends JpaRepository<user> {/** * spring data jpa 会自动注入实现(根据方法命名规范) * @return */User findByNumber(String number); @Modifying @Query("delete from User u where u.id = :id")void deleteUser(@Param("id")int id); }2.servicepublic interface UserService { User findById(int id); User findByNumber(String number); List<user> findAllUserByPage(int page,int size); User updateUser(User user,boolean throwEx);void deleteUser(int id); } @Service @Transactionalpublic class UserServiceImpl implements UserService { @Autowiredprivate UserRepository userRepository; @Overridepublic User findById(int id) {return this.userRepository.findOne(id); } @Overridepublic User findByNumber(String number) {return this.userRepository.findByNumber(number); } @Overridepublic List<user> findAllUserByPage(int page,int size) { Pageable pageable = new PageRequest(page, size); Page<user> users = this.userRepository.findAll(pageable);return users.getContent(); } @Overridepublic User updateUser(User user,boolean throwEx) { User userNew = this.userRepository.save(user);if(throwEx){throw new RuntimeException("throw a ex"); }return userNew; } @Overridepublic void deleteUser(int id) {this.userRepository.deleteUser(id); } }3.controller @Controller("user2") @RequestMapping("/datajpa/user")public class UserController {/** * 日志(slf4j->logback) */private static final Logger logger = LoggerFactory.getLogger(UserController.class); @Autowiredprivate UserService userService;/** * 返回text格式数据 * @param id 主键id * @return 用户json字符串 */@RequestMapping("/get/id/{id}") @ResponseBodypublic String getUserById(@PathVariable("id")String id){ logger.info("request /user/get/id/{id}, parameter is "+id); User user = userService.findById(Integer.parseInt(id));return JSONObject.toJSONString(user); }/** * 返回json格式数据 * @param number 编号 * @return 用户 */@RequestMapping("/get/number/{number}") @ResponseBodypublic User getUserByNumber(@PathVariable("number")String number){ User user = userService.findByNumber(number);return user; } @RequestMapping("/get/all/{page}/{size}") @ResponseBodypublic List<user> getAllUserByPage(@PathVariable("page")int page,@PathVariable("size")int size){return this.userService.findAllUserByPage(page,size); } @RequestMapping("/update/{id}/{number}/{name}") @ResponseBodypublic User addUser(@PathVariable("id")int id, @PathVariable("number")String number, @PathVariable("name")String name,boolean throwEx){ User user = new User(); user.setId(id); user.setNumber(number); user.setName(name); User userNew = null;try{ userService.updateUser(user,throwEx); }catch (RuntimeException ex){ System.out.println(ex.getMessage()); }return userNew; } @RequestMapping("/delete/{id}") @ResponseBodypublic void getUserById(@PathVariable("id")int id){this.userService.deleteUser(id); } }</user></user></user></user></user>
8. jdbcTemplate とtransactionTemplate を挿入し、データベースを操作する従来の方法を使用します。方法は次のとおりです
@Autowiredprivate JdbcTemplate jdbcTemplate; @Autowiredprivate TransactionTemplate transactionTemplate;/** * 手动控制事物测试 * @param throwEx */@Overridepublic void testTransactionManually(boolean throwEx) {try { transactionTemplate.execute(new TransactionCallback<boolean>() {/** * 事物代码 * * @param transactionStatus 事物状态 * @return 是否成功 */@Overridepublic Boolean doInTransaction(TransactionStatus transactionStatus) { User user = new User(); user.setId(1);int a = new Random().nextInt(10); //0-9user.setNumber("10000u" + a); jdbcTemplate.update("UPDATE USER SET NUMBER=? WHERE ID=?", new Object[]{user.getNumber(), user.getId()}, new int[]{Types.VARCHAR, Types.INTEGER});if (throwEx) {throw new RuntimeException("try throw exception"); //看看会不会回滚 }return true; } }); }catch (RuntimeException ex){ System.out.println(ex.getMessage()); } }/** * 手动执行jdbc测试 */@Overridepublic void testJdbcTemplate() { User user = new User();int a = new Random().nextInt(10); //0-9user.setNumber("10000i"+ a ); user.setName("name"+a);this.jdbcTemplate.update("INSERT into USER(NUMBER,NAME )VALUES (?,?)",user.getNumber(),user.getName()); }</boolean>
これまで、3 つの方法 (jpa two + jdbcTemplate) でデータベースを操作する方法について説明しました。上記のコードは実際に実行可能であることが証明されています。
以上がSpring Boot 1.5.4 集成 jpa+hibernate+jdbcTemplateの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、分散アプリケーションを構築するためのJavaのリモートメソッドの呼び出し(RMI)について説明します。 インターフェイスの定義、実装、レジストリのセットアップ、およびクライアント側の呼び出しを詳述し、ネットワークの問題やセキュリティなどの課題に対処します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します

この記事では、カスタムJavaネットワーキングプロトコルの作成を詳述しています。 プロトコルの定義(データ構造、フレーミング、エラー処理、バージョン化)、実装(ソケットを使用)、データシリアル化、およびベストプラクティス(効率、セキュリティ、メンテナ


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック



