1.配置类:运行mybatis–配置类第一步就是需要加载配置文件,第二步就是写配置文件
package com.rod;
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;
/**
* 功能描述:配置mybatis类,作用是加载配置文件,创建sqlsession对象
* 之后调用get方法获取session对象getmapper它的class对象
*/
public class Mybatisconfig {
private static SqlSessionFactory sqlSessionFactory;
//加载配置类,静态创建sqlsessionfactory对象
static {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
//调用opensession方法获取sqlsession对象
public static SqlSession getSqlSession() {
SqlSession session = sqlSessionFactory.openSession();
return session;
}
}
2.配置文件:连接数据库-到这里mybatis的基本配置就完成了
<?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>
<!--development:表示可以连接多个数据库,这里的名字代表一个数据库-->
<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://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--
注册useri.xml;所有用来从数据库获取数据的
实现接口的xml都需要在连接数据库这里注册,这些xml相当于实现类
都是用来操作数据库中的数据的,sql语句都写在这些xml里面
-->
<mapper resource="com/dao/UserI.xml"/>
</mappers>
</configuration>
3.sql语句接口,实现xml文件-以后的增删改查就要从这里开始了
package com.dao;
import com.mysqlclass.Mybatis;
import java.util.List;
/**
* 功能描述: mapper接口,作用是增删改查
*/
public interface UserI {
//select
List<Mybatis> selectlist();
//insert into
void sqlinsert(Mybatis mybatis);
//delete
void sqldelete(int id);
//update
void sqlupdate(Mybatis mybatis);
}
xml文件就是接口的实现类-在这里面相当于重写接口的方法,然后写sql语句增删改查
<?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">
<!--
namespace是需要绑定到对应的接口
本来应该是实现接口的类中写sql语句,获取数据库中的数据的
现在使用xml文件了.所以要给个名字,相当于implements 接口
只不过变成了namespace="接口全路径"
-->
<mapper namespace="com.dao.UserI">
<!--
这里是id就是调用接口的方法,实现类实现接口还行要重写方法的,这里用id表示方法
resulttype:就是返回类型,方法中select了数据库的所有数据,要再在控制台输出,
就需要有一个对应着数据库的类,去接受这些查询到的数据,所以result就是要接受数据库数据的类的全路径
-->
<select id="selectlist" resultType="com.mysqlclass.Mybatis">
select * from mybatis.mybatis_1
</select>
<!--
parametertype:是属性类型,就是我要传入的数据的数据类型,不写,也会识别得到,如下面的update
-->
<insert id="sqlinsert" parameterType="com.mysqlclass.Mybatis">
insert into mybatis_1(id,idname) values(#{id},#{idname})
</insert>
<!--这里的parameterType="int"依旧可以省略-->
<delete id="sqldelete" parameterType="int">
delete from mybatis_1 where id=#{id}
</delete>
<!--这里没写parametertype,数据传入依然可以自动识别-->
<update id="sqlupdate" >
update mybatis_1 set idname=#{idname},psw=#{psw} where id=#{id}
</update>
</mapper>
4.数据库类–对应着数据库的类
package com.mysqlclass;
/**
* 功能描述:
*/
public class Mybatis {
private int id;
private String idname;
private int psw;
public Mybatis(int id, String idname, int psw) {
this.id = id;
this.idname = idname;
this.psw = psw;
}
public Mybatis(int id, String idname) {
this.id = id;
this.idname = idname;
}
public Mybatis() {
}
public void setId(int id) {
this.id = id;
}
public void setIdname(String idname) {
this.idname = idname;
}
public void setPsw(int psw) {
this.psw = psw;
}
public int getId() {
return id;
}
public String getIdname() {
return idname;
}
public int getPsw() {
return psw;
}
@Override
public String toString() {
return "Mybatis{" +
"id=" + id +
", idname='" + idname + '\'' +
", psw=" + psw +
'}';
}
}
5.测试类
package com;
import com.dao.ImpMapper;
import com.mysqlclass.Mybatis;
import com.rod.Mybatisconfig;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
/**
* 功能描述:
*/
public class MybatisTest {
/**
* 功能描述: 查询数据
* @param
* @retuern void
**/
@Test
public void test() {
SqlSession session = Mybatisconfig.getSqlSession();
ImpMapper mapper = session.getMapper(ImpMapper.class);
List<Mybatis> selectlist = mapper.selectlist();
for (Object o : selectlist) {
System.out.println(o);
}
session.close();
}
/*
* 功能描述: 添加数据
* @param
* @retuern void
**/
@Test
public void test1() {
/**
* 功能描述: 添加一个数据
* get:获取配置类的sqlsession对象
* 使用session对象get到sql的class类
* 调用sql类的方法,添加数据
* 提交事务
* 关闭
**/
SqlSession session = Mybatisconfig.getSqlSession();
ImpMapper mapper = session.getMapper(ImpMapper.class);
mapper.sqlinsert(new Mybatis(7, "gg"));
session.commit();
session.close();
}
/*
* 功能描述: 删除数据
* @param
* @retuern void
**/
@Test
public void test2() {
SqlSession sqlSession = Mybatisconfig.getSqlSession();
ImpMapper mapper = sqlSession.getMapper(ImpMapper.class);
mapper.sqldelete(7);
sqlSession.commit();
sqlSession.close();
}
/**
* 功能描述: 修改数据
* @param
* @retuern void
**/
@Test
public void test3() {
SqlSession sqlSession = Mybatisconfig.getSqlSession();
ImpMapper mapper = sqlSession.getMapper(ImpMapper.class);
mapper.sqlupdate(new Mybatis(5, "rod", 777));
sqlSession.commit();
sqlSession.close();
}
}