第一步
打开idea开发工具,新建一个名mybtis的java项目,在根目录下新建新建lib文件夹,把mybatis,mysql-connection的jar放进去
第二步
在src文件夹下新建一个mybatis-config.xml,根据自身情况修改driver,url,username,password
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>`在这里插入代码片`
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="StudentMapper.xml"/>
</mappers>
</configuration>
同样在src文件夹下新建一个StudentMapper.xml
<?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.bean.Student"></mapper>
第三步
在数据中新建一个student表
create table student
(
stu_id int auto_increment comment '学生id',
stu_name varchar(64) default '张三' null comment '姓名',
stu_age int null comment '年龄',
constraint student_pk
primary key (stu_id)
)
comment '学生表';
相应的新建一个Student类,以后查询插入都要用到在这个类,必不可少
package com.bean;
public class Student {
private long id;
private String name;
private long age;
public Student() {
}
public Student(long id, String name, long age) {
this.id = id;
this.name = name;
this.age = age;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
第四步
- 新建一个MainApp类
package com.test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MainApp {
public static void main(String[] args) {
String resources="mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream=Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
try(SqlSession sqlSession=factory.openSession()){
//操作数据库 code...
}
}
}
- 由于数据库没有内容,我们先写一个添加代码
向Student.xml加入插入语句
<?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.bean.Student">
<insert id="addStudent">
insert into student(stu_id,stu_name,stu_age) values(#{id},#{name},#{age})
</insert>
</mapper>
回到MainApp类测试
package com.test;
import com.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MainApp {
public static void main(String[] args) {
String resources="mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream=Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
try(SqlSession sqlSession=factory.openSession()){
//操作数据库 code...
//插入
Student student=new Student(1,"张三",20);
sqlSession.insert("com.bean.Student.addStudent",student);
//提交
sqlSession.commit();
}
}
}
接下类测试更新
同样在Student.xml加入更新代码
<?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.bean.Student">
<insert id="addStudent">
insert into student(stu_id,stu_name,stu_age) values(#{id},#{name},#{age})
</insert>
<update id="updateStudent">
update student
set stu_name=#{name },stu_age=#{age}
where stu_id=#{id}
</update>
</mapper>
回到MainApp类
package com.test;
import com.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MainApp {
public static void main(String[] args) {
String resources="mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream=Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
try(SqlSession sqlSession=factory.openSession()){
//操作数据库 code...
// //插入
// Student student=new Student(1,"张三",20);
// sqlSession.insert("com.bean.Student.addStudent",student);
//更新
Student student1=new Student(1,"李四",30);
sqlSession.update("com.bean.Student.updateStudent",student1);
//提交
sqlSession.commit();
}
}
}
接下来测试查找
同样在Student.xml加入查找代码
<?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.bean.Student">
<insert id="addStudent">
insert into student(stu_id,stu_name,stu_age) values(#{id},#{name},#{age})
</insert>
<update id="updateStudent">
update student
set stu_name=#{name },stu_age=#{age}
where stu_id=#{id}
</update>
<!-- 映射,property对应的javaBean类的成员变量名,column对应的是数据库列名,与hibernate一个道理-->
<resultMap id="studentResoutMap" type="com.bean.Student">
<id property="id" column="stu_id"/>
<result property="name" column="stu_name"/>
<result property="age" column="stu_age"/>
</resultMap>
<select id="selectStudent" parameterType="int" resultMap="studentResoutMap">
select * from student where stu_id=#{id}
</select>
</mapper>
回到MainApp类
package com.test;
import com.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MainApp {
public static void main(String[] args) {
String resources="mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream=Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
try(SqlSession sqlSession=factory.openSession()){
//操作数据库 code...
// //插入
// Student student=new Student(1,"张三",20);
// sqlSession.insert("com.bean.Student.addStudent",student);
// //更新
// Student student1=new Student(1,"李四",30);
// sqlSession.update("com.bean.Student.updateStudent",student1);
//查找,根据id查找
Student student2=sqlSession.selectOne("com.bean.Student.selectStudent",1);
System.out.println(student2);
//提交
sqlSession.commit();
}
}
}
测试删除
在Student.xml加入删除代码
<?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.bean.Student">
<insert id="addStudent">
insert into student(stu_id,stu_name,stu_age) values(#{id},#{name},#{age})
</insert>
<update id="updateStudent">
update student
set stu_name=#{name },stu_age=#{age}
where stu_id=#{id}
</update>
<!-- 映射,property对应的javaBean类的成员变量名,column对应的1是数据库列明,与hibernate一个道理-->
<resultMap id="studentResoutMap" type="com.bean.Student">
<id property="id" column="stu_id"/>
<result property="name" column="stu_name"/>
<result property="age" column="stu_age"/>
</resultMap>
<select id="selectStudent" parameterType="int" resultMap="studentResoutMap">
select * from student where stu_id=#{id}
</select>
<delete id="deleteStudent" parameterType="int">
delete from student where stu_id =#{id}
</delete>
</mapper>
回到MainApp类
package com.test;
import com.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MainApp {
public static void main(String[] args) {
String resources="mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream=Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
try(SqlSession sqlSession=factory.openSession()){
//操作数据库 code...
// //插入
// Student student=new Student(1,"张三",20);
// sqlSession.insert("com.bean.Student.addStudent",student);
// //更新
// Student student1=new Student(1,"李四",30);
// sqlSession.update("com.bean.Student.updateStudent",student1);
//查找,根据id查找
// Student student2=sqlSession.selectOne("com.bean.Student.selectStudent",1);
// System.out.println(student2);
//删除
sqlSession.delete("com.bean.Student.deleteStudent",1);
//提交
sqlSession.commit();
}
}
}
MainApp类代码有点长,可以写一个获取SqlSession工具类,类似于jdbc连接工具
package com.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionUtil {
public static SqlSession getSqlSession() {
String resources = "mybatis-config.xml";
InputStream inputStream = null;
try {
//加载配置文件
inputStream = Resources.getResourceAsStream(resources);
} catch (IOException e) {
e.printStackTrace();
}
//获取SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
return factory.openSession();
}
}
MainApp类使用工具后,代码明显精简多了
package com.test;
import com.bean.Student;
import com.util.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
public class MainApp {
public static void main(String[] args) {
//获取SqlSession
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
//操作数据库 code...
//插入
Student student = new Student(1, "张三", 20);
sqlSession.insert("com.bean.Student.addStudent", student);
//更新
Student student1 = new Student(1, "李四", 30);
sqlSession.update("com.bean.Student.updateStudent", student1);
//查找, 根据id查找
Student student2 = sqlSession.selectOne("com.bean.Student.selectStudent", 1);
System.out.println(student2);
//删除
sqlSession.delete("com.bean.Student.deleteStudent", 1);
//提交
sqlSession.commit();
}
}