3.3 dao层:注意:只有接口,没有实现类
//不使用@Mapper注解,通过使用.xml文件,在对应的.xml写sql语句,查出数据并返回 public interface IPersonDao { public List<Person> findAll(); public Person findByid(@Param("id") Integer id); } 另外一种方法(拿其他栗子举例): //使用了@Mapper注解 ,就不需要再写.xml文件 @Mapper public interface IEmployeeDao { @Select("select * from tbl_emp e where e.name=#{name}") public List<Employee> findEmpByName(@Param("name") String name); }
3.4 entity 层:
/** * 持久化类 * by wx 2019-04-08 */ public class Person implements Serializable { private static final long serialVersionUID = -6172780607087661025L; private Integer id; private String name; private String addr; private String company; 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 String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } }
3.5 在application.yml文件配置连接数据库:
在这里遇到了2个问题:
1.一直报这个驱动类找不到,但是这个驱动类jar包已经添加到项目了,并且我也反编译jar包,确认路径是对的。后来将target文件夹删掉重新编译,就没有问题了。
2.我用sys/root作为用户名/密码连接,报,拒接连接,让我创建sys连接并授权之类的,然后我就用/as sysdba登陆 创建了一个用户,如图所示(因为之前已经建立了c##root用户,这里就拿c##wx做例子):
由于tbl_person表是建立在sysdba用户下的,在c##root用户下不能查询,在次用户下想访问就需要将这个表单独授权给c##root用户,同时还需要建同义词,这样就可以省略前缀sys.,直接通过表名就可以操作。
如图所示:
3.6 入口函数配置扫描mapper,即:@MapperScan(“com.wx.springbootdemo.dao”)
@RestController @SpringBootApplication @MapperScan("com.wx.springbootdemo.dao")//要扫描的dao包 public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootdemoApplication.class, args); } }
3.7 mapper映射文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.wx.springbootdemo.dao.IPersonDao"> <select id="findAll" resultType="com.wx.springbootdemo.entity.Person"> select id,name,addr ,company from tbl_person </select> <select id="findByid" resultType="com.wx.springbootdemo.entity.Person"> select * from tbl_person where id = #{id} </select> </mapper>
3.8 项目结构:
测试:先启动项目,然后如下访问:
另一种测试方法(Spring Boot 内嵌的tools),如下图:
个人感悟
Mybatis
:虽然做到了代码和sql语句分离,但是无法做到数据库无关性,即换了一个数据库例如mysql,很多语句就得做修改。Hibernate
:是ORM框架,做到了数据库无关性,很好的封装了底层jdbc。支持独特的Hql查询,也支持原生的sql语句。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。