- 单表操作不写sql语句
- 优化多表操作时设置参数的编码体验以及优化返回结果集
如何使用? 创建一个maven项目 然后在pom.xml中放入下面的xml代码即可
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://www.jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.dongdaxiaodong</groupId>
<artifactId>Ralin</artifactId>
<version>1.6</version>
</dependency>
</dependencies>
接着,就可以调用Ralin提供的api极其方便的进行增删查改了
Ralin.open("jdbc:mysql://localhost:3306/practice?useSSL=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","123456789");
如果报错,可以切换mysql-connector-java版本
当然Ralin也可以连接数据库连接池Ralin.open(datasource)
,下面以阿里巴巴开源的druid为例,实际使用注意修改数据库名称和密码
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testralin?useSSL=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("123456789");
Ralin.open(dataSource);
--Teacher.java
import ralin.Model
public class Teacher extends Model{
private int id;
private String name;
private String course;
public Teacher(){};
public Teacher(String name,String course){
this.name=name;
this.course;
}
}
--Student.java
import ralin.Model;
public class Student extends Model{
private int id;
private String name;
private int gender;
private int tid;
public Student(){};
public Student(String name,int gender,int tid){
this.name=name;
this.gender=gender;
this.tid=tid;
}}
getter,setter省略
- 创建table时,设置一个主键,并且让其自增!
- 你需要使用Ralin进行增删查改的类需要继承Model类,同时需要注意的是类名默认和数据库table名一致,如果不一致使用注解
@Table(name="")
,同样的,属性也应该和数据库中字段一致
Ralin.insert(new Student("colin",0,1)).commit()
,insert方法中参数是一个Student对象,注意加上commit()
Ralin的api设计和java8中stream的操作类似可以实现select(boy.class).where().like().between().notEq()......
api | 说明 | 解析为的sql语句 |
---|---|---|
where | select(Student.class).where(name,"colin") | where name = 'colin' |
where | select(Student.class).where(id>?,20) | where id > 20 |
like | select(Student.class).like(name,"colin") | where name like '%colin%' |
between | select(Student.class).between(tid,10,20) | where tid between 10 and 20 |
count | 获取数量 | |
all | 一般用于表达式结尾,返回查询到底对象列表 |
修改和查询类似,只是最后要加上.commit()
一般的修改语句为Ralin.update(Student.class).set().where()
,当然Ralin中也提供了其他的api
Ralin.delete(Student.class).where().commit()
。
小贴士:可以先通过select获取到需要删除的数据的id,然后通过Ralin.delete().byId(id).commit()进行删除
上面的例子都是使用ralin进行的单表操作,接下来,我们使用ralin的bySql实现多表操作
联合查询示例:
一:
List<Student> students=Ralin.bySql(Student.class).
setSql("select s.id,s.name from student s join teacher t on s.tid=t.id where t.course='math'").
commit();
for(Student student:students){
System.out.println(student.getId()+" and "+student.getName());
}
二:
int gender=2;
String subject="chinese";
List<Teacher> teachers=Ralin.bySql(Teacher.class).
setSql("select t.id,t.name,t.course from teacher t,student s where s.tid=t.id and s.gender=? and t.course=?").
setParam(gender).
setParam(subject).
commit();
for(Teacher teacher:teachers){
System.out.println(teacher.getId()+" and "+teacher.getName()+" and "+teacher.getCourse());
}
- bySql()方法的参数是执行结果的返回类型
- bySql模块不支持同时获取多表的属性即(select t.id,s.name......)
- 如果使用bysql进行增,删,改,则将bySql()的参数设为null,Ralin.bySql(null).setSql(.....).setParam(...).commit()
- 注意加上.commit()