SpringBoot+hibernate例子

这篇博客记录了SpringBoot与Hibernate的简单整合过程,通过一个实例展示了如何在项目中使用Hibernate的基本操作,虽然未涉及自定义SQL,但适用于快速入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上看了好多,留个例子给自己,都是最简单的使用,没有触及到自己写SQL,用的是Hibernate封装好的方法,但是现实中肯定是基础方法不能满足查询语句的。

一、SpringBoot整合Hibernate,看文章:https://blog.youkuaiyun.com/nzzl54/article/details/81067807

二、配置完后上例子:

1、html中:

<body>
<div style = "margin-top: 50px; margin-left: 50px;">
请输入姓名:<input id = "text1" type = "text"></input><br></br><br></br>
<input id = "button2" type="button" value="hibernate-尝试保存数据" onClick = "testHibernate()"></input>
请输入id:<input id = "text_id" type = "text"></input>
<input id = "button3" type="button" value="hibernate-尝试查询数据"  onClick = "testQueryHibernate()"></input>
</div>
</body>
 <script type="text/javascript">
/*<![CDATA[ */
function testHibernate(){
	var ffmap = {};
	ffmap.name = document.getElementById("text1").value;
	ffmap.age = 17;
	ffmap.male = 2;  //1男  2女
	alert("即将保存数据 - name:"+document.getElementById("text1").value+",age:17,male:女");
	dataSave(ffmap);
}

function dataSave(ffmap){
	$.ajax({
		type:"post",
		url:"/test/testHibernate",
		data:JSON.stringify(ffmap),
		dataType:"json",
		contentType: "application/json; charset=utf-8",
		success:function(data){
			console.log("ajax回调 - hibernate");
			var d = eval(data);
			if(d.ok != undefined){
				alert(d.ok);
			}else{
				alert(d.error);
			}
		}
	}); 
}

function testQueryHibernate(){
	var ffmap = {};
	var name = document.getElementById("text_id").value;
	$.ajax({
		type:"post",
		url:"/test/testQuery",
		data:name,
	    //data:JSON.stringify(ffmap),
		dataType:"json",
		contentType: "application/json; charset=utf-8",
		success:function(data){
			//var d = eval(data);
			ffmap = data;
			//alert("测试 = "+ ffmap.ok);
			if(ffmap.ok != undefined){
				alert("测试 = "+JSON.stringify(ffmap.data));
			}else{
				alert(ffmap.error);
			} 
		}
	}); 
}

/*]]>*/
</script>
<script th:src="@{/static/js/bootstrap4/js/jquery-1.12.4.js}"></script>

2.Controller中:

@Controller
@RequestMapping("/test")
public class testController {
     @Resource
    private TestService testService;
	@Autowired
	private VoDao voDao;
	
	@RequestMapping("/testQuery")
	@ResponseBody
    public Map<String,Object> testQuery(@RequestBody String name) {
		Map<String,Object> m = new HashMap<>();
		try {
			int id = Integer.valueOf(name);
			List<TestVo> list = (List<TestVo>) voDao.findAll();
			System.err.println("sample started. data ="+list);
			m.put("ok", "查询成功");
			m.put("data",voDao.findOne(id));  //这是不太规范的写法,应该要和下面方法一样,进行封装到TestService中
		}catch(Exception e) {
			e.printStackTrace();
			logger.info(e.getStackTrace().toString());
			m.put("error",e.getStackTrace().toString());
		}
		return m;
    }
	
	@RequestMapping("/testHibernate")
	@ResponseBody
    public Map<String,Object> testHibernate(@RequestBody Map<String,Object> m) {
		try {
			int male = Integer.valueOf(m.get("male").toString());
			int age = Integer.valueOf(m.get("age").toString());
			TestVo d =new TestVo(m.get("name").toString(),age,male,"听音乐");
			d.setRemark("这是备注haha");
			testService.save(d);//保存数据
			m.put("ok", "hibernate测试保存成功 !" + m.get("name").toString());
		}catch(Exception e) {
			e.printStackTrace();
			logger.info(e.getStackTrace().toString());
			m.put("error",e.getStackTrace().toString());
		}
		return m;
    }
}

3、写DAO和DTO:

@Entity //加入这个注解,就会进行持久化了
@Table(name="userinfo") //对应数据库的表名字
public class TestVo {
	@Id
	@GeneratedValue
	private Integer id;
	@Column(name="name")
    private String name;
	@Column(name="male")
    private  Integer male;   //性别
	@Column(name="age")
    private  Integer age;   //年龄
	@Column(name="hobit")
    private  String hobit;  //爱好
    @Column(name = "remark")
    private String remark;  //备注
    
    public TestVo() {
    }

    public TestVo(String name, Integer age, Integer male,String hobit) {
        this.name = name;
        this.male = male;
        this.hobit = hobit;
        this.age = age;
    }
    
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    
    public Integer getMale() {
        return male;
    }

    public void setMale(Integer male) {
        this.male = male;
    }
    
    public String getHobit() {
        return hobit;
    }

    public void setHobit(String hobit) {
        this.hobit = hobit;
    }
    
    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

}
@Repository  
@Table(name="userinfo")
@Qualifier("voDao")
public interface VoDao extends CrudRepository<TestVo,Integer> {
   //别的方法可以自己添加
}

4、写Service和其实现:

public interface TestService {

	 public void save(TestVo t);
	 
}
@Service
public class TestServiceImpl implements TestService{
    
    @Autowired
    private VoDao voDao;
     
    @Override
    public void save(TestVo t) {
        // TODO Auto-generated method stub
        voDao.save(t);
    }
}

5、数据库截图和保存截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值