Java从零单排 -- Java操作数据库

240 阅读2分钟

Spring Boot 约定大于配置

先在pom.xml文件中添加以下依赖:

        <!-- mybatis 框架-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
	

        <!-- SQLite 驱动 -->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.21.0.1</version>
        </dependency>

添加完依赖后,要将依赖下载,点pom.xml上的悬浮maven图标,idea就会帮我们自动下载了。 download_icon

等进度条完结后,在application.properties文件中添加spring boot的配置

#配置驱动
spring.datasource.driver-class-name=org.sqlite.JDBC
#配置数据库地址
spring.datasource.url=jdbc:sqlite:C:/Users/Administrator/study_java/sqllite/test.db

只要增加这个2行,spring boot运行时就会帮我们自己连接数据库了,我们就无需关心怎么连接数据库的问题。

java操作数据库

先简单学会用。

在com.example.myFirstMaven包下新建一个dao包和entity包,dao包下新建一个PersonDao接口,entity包新建一个Person类。

/**
 * 以查询Person表为例 
 * #{}符号替代符号。
 */
@Component //将此类交给spring
@Mapper  //声明这是一个mybatis访问数据库的接口
public interface PersonDao {
    //查询语句
    @Select("select * from person")
    List<Person> getList();
    //插入一条数据
    @Insert("insert into person (" +
            "id,name,age,nationality) values(" +
            "#{id},#{name},#{age},#{nationality})")
    void addPerson(Person person);

    //删除数据
    @Delete("delete from person where id = #{id}")
    void deletePerson(Person person);

    //更新数据
    @Update("update person set age = #{age},nationality=#{nationality} where name=#{name}")
    void updatePerson(Person person);
}

/**
 * Person实体与表Person的字段必须一一对应 
 */
public class Person {
    private Integer id;
    private String name;
    private Integer age;
    private String nationality;
    
	...省去了set get toString 方法
}

先修改Person主键id为自动递增

运行

在test包下面的MyFirstMavenApplicationTests,新增几个方法

    //依赖注入 spring的主要特性
	@Autowired
	PersonDao personDao;
	@Test
	public void getPersonList(){
		System.out.println(personDao.getList());
	}
	@Test
	public void addPerson(){
		Person person = new Person();
		person.setAge(20);
		person.setName("小金");
		person.setNationality("非洲");
		personDao.addPerson(person);
		System.out.println(personDao.getList());
	}
	@Test
	public void deletePerson(){
		Person person = new Person();
		person.setId(10);
		personDao.deletePerson(person);
	}

	@Test
	public void updatePerson(){
		Person person = new Person();
		person.setName("小金");
		person.setAge(19);
		person.setNationality("美国");
		personDao.updatePerson(person);
	}

将鼠标移动没方法名上,右键run + 方法名,就可以跑测试方法了。

细节

  • spring boot 依赖注入。所有通过给类或着方法添加@Component注解,此类的生命周期将有spring来管理,有且全局只有一个这样的类。通常我们要使用一个类时,是通过new来获取到类的,但是将类交给spring管理,它会帮我自动创建好,只要通过@Autowired就能自动注入变量中。
  • mybatis 注解@Mapper 声明这是一个mybatis访问数据库的接口,mybatis会帮我们自动创建实现类的。@Select查询、 @Insert插入、 @Delete删除、 @Update更新。
  • #{},这就告诉 MyBatis 创建一个预处理语句(PreparedStatement)参数,在 JDBC 中,这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处语句中,通过数据库的预编译功能,就能执行sql语句,可以有效的防止sql注入的危险。
  • mybaits是基于jdbc的一层封装,大家可以去了解下,如何通过原生的jdbc进行数据库的操作
  • 包装类,就是将基本类型看作对象的形式,赋予它更多功能。
基本类型	对应的引用类型
boolean	java.lang.Boolean
byte	java.lang.Byte
short	java.lang.Short
int	java.lang.Integer
long	java.lang.Long
float	java.lang.Float
double	java.lang.Double
char	java.lang.Character