现在来介绍SpringBoot基于jpa对MySQL进行操作。 既然是数据库操作总有点目标和资源吧, 现在来做一个:《万界神兵录》收集一下天下神兵,从剑开始
一.前期准备
CREATE TABLE sword ( id int PRIMARY KEY NOT NULL COMMENT '身份验证码' AUTO_INCREMENT, name varchar(24) NOT NULL COMMENT '名称', info text COMMENT '描述信息', imgurl varchar(100) COMMENT '图片', create_time datetime COMMENT '创建时间', modify_time datetime COMMENT '修改时间', origin varchar(40) COMMENT '来源' );
sql> INSERT INTO `toly`.`sword` (`name`, `info`, `imgurl`, `create_time`, `modify_time`, `origin`) VALUES ('Excalibur', 'Excalibur是传说中不列颠国王亚瑟王从湖之仙女那得到的圣剑。此剑在是精灵在阿瓦隆(Avalon)所打造, 剑锷由黄金所铸、剑柄上镶有宝石,并因其锋刃削铁如泥', '', '2018-07-16 05:30:15', '2018-07-16 05:30:20', '亚瑟王')
二.项目中:
<!--jpa依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
spring: datasource: driver-class-name: com.mysql.jdbc.Driver #驱动类名--不变 url: jdbc:mysql:///toly #数据库名称 username: root #用户名 password: ****** #密码 jpa: hibernate: ddl-auto: none #见下 show-sql: true #控制台显示sql语句
ddl-auto: create(删除,创建) ddl-auto: update(第一次创建,之后更新) ddl-auto: create-drop(创建,程序停止后删除) ddl-auto: none(无操作)
注意:如果已经创建数据库,类名和表名统一。
@Entity //实体类 public class Sword { @Id // id @GeneratedValue(strategy = GenerationType.IDENTITY) //自增长 private int id; private String name; private String info; private String imgurl; private Date create_time; private Date modify_time; private String origin; //get set toString 省略... }
public interface SwordRepository extends JpaRepository<Sword, Integer> { }
查询操作
@Autowired //获取实例 private SwordRepository mSwordRepository; /** * @return json字符串显示 */ @GetMapping(value = "/swords/findAll") public List<Sword> findAllToJson() { return mSwordRepository.findAll(); }
查询所有
/** * @param id * @return */ @GetMapping(value = "/swords/find/{id}") public Sword find(@PathVariable("id") Integer id) { return mSwordRepository.findById(id).get(); }
根据id查询
//通过name查询 public List<Sword> findByName(String name);
/** * @param name * @return */ @GetMapping(value = "/swords/findByName/{name}") public List<Sword> findByAtk(@PathVariable("name") String name) { return mSwordRepository.findByName(name); }
根据name查询
插入操作
:
/** * 添加:返回插入对象的json字符串 * * @return */ @GetMapping(value = "/swords/insert") public Sword insert() { Sword sword = new Sword(); sword.setInfo("《犬夜叉》杀生丸配件,初时是一把不能杀此世之物的治愈之刀," + "属于彼世之刀,是刀刀斋用犬大将(斗牙王)的獠牙所打造的剑," + "可通过斩杀冥界的使者令死者复活。" + "若是以真正的慈悲心使之发动,一挥刀能拯救百命"); sword.setName("天生牙"); sword.setOrigin("《犬夜叉》--杀生丸"); sword.setCreate_time(new Date()); sword.setModify_time(new Date()); return mSwordRepository.save(sword); }
插入操作--网页返回
插入操作--控制台输出
/** * 添加:通过url传值构建对象 * @return */ @GetMapping(value = "/swords/insert2") public Sword insert2(Sword sword) { return mSwordRepository.save(sword); }
更新操作
:打错了一个字,来改改吧:配件==>配剑@GetMapping(value = "/swords/updata/{id}") public Sword updata(Sword sword) { return mSwordRepository.save(sword); }
删除操作
:@GetMapping(value = "/swords/delete/{id}") public void insert(@PathVariable("id") Integer id) { mSwordRepository.deleteById(id); }
事务
@Service public class SwordService { @Autowired private SwordRepository mSwordRepository; public void insertTwo() { Sword jie = new Sword(); jie.setName("解剑"); jie.setInfo("幻将录--何解莲"); mSwordRepository.save(jie); } }
@Autowired //得到服务对象 private SwordService mSwordService; /** * 查询所有:返回json字符串 * * @return */ @GetMapping(value = "/swords/inset2") @Transactional public void inset2() { mSwordService.insertTwo(); }
/** * 作者:张风捷特烈 * 时间:2018/7/16:15:31 * 邮箱:1981462002@qq.com * 说明:业务需求:解连双剑必须同时插入成功或失败 */ @Service public class SwordService { @Autowired private SwordRepository mSwordRepository; public void insertTwo() { Sword jie = new Sword(); jie.setName("解剑"); jie.setInfo("幻将录--何解莲"); mSwordRepository.save(jie); Sword lian = new Sword(); lian.setName("连剑"); //在这故意给个异常看看结果 jie.setInfo("幻将录--何解莲" + 1 / 0); mSwordRepository.save(lian); } }
@Transactional public void insertTwo() { ...... }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句