Mybatis实现jdbc的增删改查方法
我们可以分为以下几个步骤来实现:
1、 编写实体类
2、 配置实体类
3、 配置mybatis的xml文件
4、 编写接口
5、 实现测试类
需要的jar包:
1、 mybatis-3.2.3.jar
2、 mysql-connector-java-5.1.25-bin.jar
第一步:
我们需要来编写一个实体类,实体类也是一个javaBean,但是这个javaBean有点特殊,它里面的属性必须是我们数据库中数据表的字段对应的,并且它的名字也必须是表名。
代码如下:
package com.huweiyang.model;
publicclassUser {
/**
* 配置实体类 要与数据库中的字段对应
*/
publicintid;
public String name;
publicintage;
publicint getId() {
returnid;
}
publicvoid setId(intid) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(intage) {
this.age = age;
}
第二步:
我们写好了实体类,现在要来配置这个实体类,在这个实体类中我们配置的主要是:
接口的路径
值得注意的是这个xml文件的名字,也要必须是与我们的实体类同名(不区分大小写)
Sql语句
代码如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN" "mybatis-3-mapper.dtd">
<!-- 配置接口路径 -->
<mapper namespace="com.huweiyang.IDao.IUser">
<!-- 配置添加方法 -->
<insert id="insertUser" parameterType="User">
insertinto user(id,name,age) values(#{id},#{name},#{age});
</insert>
<!-- 配置删除方法 -->
<delete id="deleteUser" parameterType="int">
deletefrom user where id = #{id};
</delete>
<!-- 配置更改方法 -->
<update id="updateUser" parameterType="User">
updateuser set name=#{name} where id = #{id};
</update>
<!-- 配置查看方法 -->
<select id="selectUser" resultType="User">
select* from user;
</select>
</mapper>
第三步:
现在我们要来配置mybactis的xml文件,主要配置的是实体类的路径,jdbc的连接,实体类配置的路径
代码如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDconfig 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.huweiyang.model.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybaits"/>
<property name="username" value="root"/>
<property name="password" value="lookme"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/huweiyang/model/user.xml"/>
</mappers>
</configuration>
第四步:
现在我们要来编写我们的接口了,mybactis是持久层框架肯定是少不了接口的,在接口中我们编写配置实体类中对应的sql语句的方法,但是我们接口中的方法名必须是与实体类配置的id对应
代码如下:
package com.huweiyang.IDao;
import java.util.List;
import com.huweiyang.model.User;
public interface IUser {
// 接口中的添加方法
publicvoid insertUser(User user);
// 接口中的删除方法
publicvoid deleteUser(int id);
// 接口中的更改方法
publicvoid updateUser(User user);
// 接口中的查看方法
publicList<User> selectUser();
}
第五步:
我们的准备工作OK了现在我们要了测试我们编写的程序是否有用,我们首先要获取sqlsession的对象来方便我们执行程序,在这里我们还可以用java中封装的思想来封装不同的方法,对应不同的功能实现。
代码如下:
package com.huweiyang.matin;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.huweiyang.IDao.IUser;
import com.huweiyang.model.User;
public class Mapping {
// 定义为全局的方便在其它方法中调用
staticIUser iuser = null;
staticSqlSession sqlsession = null;
publicstatic void main(String[] args) throws IOException {
// 获取sqlsession对象
Readerres = Resources.getResourceAsReader("config.xml");
SqlSessionFactorysqlsessionFactory = new SqlSessionFactoryBuilder().build(res);
sqlsession = sqlsessionFactory.openSession();
iuser = sqlsession.getMapper(IUser.class);
// 调用封装的查看方法
Mapping sr = new Mapping();
sr.select(iuser.selectUser());
}
/**
* 封装添加方法
*/
publicvoid insert(){
// 实例User对象并调用他们的set方法
Useruser = new User();
user.setId(4);
user.setName("d");
user.setAge(19);
// 调用接口中的方法
iuser.insertUser(user);
// 提交数据库
sqlsession.commit();
}
/*
* 封装删除的方法
*/
publicvoid delete(){
// 实例User对象并调用他们的set方法
Useruser = new User();
user.setId(3);
// 调用接口中的删除方法
iuser.deleteUser(4);
// 提交
sqlsession.commit();
}
/**
* 封装更改方法
*/
publicvoid update(){
// 实例User对象并调用他们的set方法
Useruser = new User();
user.setName("tt");
user.setId(1);
// 调用接口中的更改方法
iuser.updateUser(user);
// 提交
sqlsession.commit();
}
/*
* 封装查看方法
*/
publicvoid select(List<User> getuser){
// 用for循环读取出数据库中的记录
for(Useruser : getuser){
System.out.println("id:"+user.getId());
System.out.println("name:"+user.getName());
System.out.println("age:"+user.getAge());
}
}
}