java使用mybatis操作数据库入门程序:
一:单个查询:
1,准备数据库: 见表信息: 数据信息: |
2,eclipse准备:
实体类如下:
一个实体中就对应数据库的三个属性,然后set,get一下
配置文件如下: |
<?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,还有一个很重要的作用,后面会讲 -->
<mapper namespace="test">
<select id="queryStudentById" parameterType="int"
resultType="String">
select name from student where id=#{id}
</select>
</mapper>
主配置:
任务是连接数据库,然后加载上边的配置文件:
<?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>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/Student.xml"/>
</mappers>
</configuration>
最后是测试类:
package cn.itheima.test;
import java.io.IOException;
import java.io.InputStream;
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 org.junit.Before;
import org.junit.Test;
public class MybatisTest {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void init() throws IOException {
// 1,创建sqlsessionfactorybuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 2.加载slqmapConfig.xml配置
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
// 3创建sqlsesisonfactory对象
this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
}
@Test
public void testQueryUserById() {
// 4.创建sqlsesion对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5.执行sqlsession对象执行查询,获取结果user
// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数
String name = sqlSession.selectOne("queryStudentById", 2);
// 6.打印结果
System.out.println(name);
// 释放资源
sqlSession.close();
}
}
控制台输出:
二:多个查询+模糊查询
接下来修改一点:上边查询的是一条结果,我下边利用模糊查询方式同时查询多条结果:
只修改配置文件student.xml和测试类,其他不变:
<select id="queryStudentLike" parameterType="String"
resultType="String">
select dept from student where name like #{name}
</select>
@Test
public void testQueryUserLike() {
// 4.创建sqlsesion对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5.执行sqlsession对象执行查询,获取结果user
// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数
List<String> list = sqlSession.selectList("queryStudentLike", "%三%");
// 6.打印结果
for(String name:list){
System.out.println(name);
}
// 释放资源
sqlSession.close();
}
控制台打印:
三:插入数据:
依旧变化两个代码:只修改配置文件student.xml和测试类,其他不变:
<insert id="saveStudent" parameterType="cn.itheima.pojo.Student">
insert into student (id,name,dept) values(#{id},#{name},#{dept})
</insert>
@Test
public void TestSaveStudent(){
//4创建要给sqlsession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//5.执行sqlsession对象执行保存
///创建需要保存的user对象
Student student=new Student();
student.setId(40);
student.setName("小张");
student.setDept("光电");
sqlSession.insert("saveStudent",student);
System.out.println(student.getDept());
//需要进行事务提交
sqlSession.commit();
}
查看数据库: