mybatis的简单实例

最近开始学习mybatis,感觉非常好用。

首先创建Mybatis_test项目,在src下创建lib文件夹,将mybatis的jar包和mysql连接的jar包添加到项目路径

所用到的jar包:http://download.csdn.net/detail/fengsigaoju/9850015

随后使用mysql在名为mybatis的database下创建student表,具体内容如下:

 create table student(
    -> id int auto_increment,
    -> name varchar(100),
    -> age int,
    -> primary key(id));

在src包下创建com.po包,用来存放beans,在com.po包下创建Student.java

package com.po;
public class Student {
 private int id;
 private String name;
 private int age;
 public int getId() {
		return id;
 }
 public void setId(int id) {
		this.id = id;
}
 public String getName() {
	return name;
}
 public void setName(String name) {
	this.name = name;
}
 public int getAge() {
	return age;
}
 public void setAge(int age) {
	this.age = age;
}
 
}
在src下创建com.mapping包,用来存放映射的sql语句,创建接口

StudentMapper.java

package com.mapping;

import java.util.List;
import com.po.Student;
//这个接口很重要,当外部代码调用接口方法时,就会执行与其相绑定的sql语句,类名需要与与映射xml文件中名字空间相同,方法名需要与映射xml文件中的id相同
//充分体现了sql代码与业务逻辑解耦合的特性,我们可以在代码设计阶段就将这个接口完成,然后具体填充其中的内容
public interface StudentMapper {
  Student SelectStudent(String name);//根据姓名查询某一个学生是否存在
  List<Student>SelectStudentList();//查询表中所有数据
  void InsertStudent(String name,int age);//根据姓名和年龄,插入新信息
  void DeleteStudent(int id);//根据传入id删除信息
  void UpdateStudent(String name,int age);//根据名字更改年龄
}
在com.mapping包下创建StudentMapper.xml,用来与接口方法相关联,映射到sql语句上

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.mapping.StudentMapper">
<!-- 对应的是指定的实体类 -->

<!-- 后面对应的是接口每一个方法 resultType是返回值类型,如果直接返回的是Student类型,那不用说,肯定是Student类型,如果返回的列表,那么指的是里面具体的类型,还是Student-->
<!-- 根据姓名查询某一个学生是否存在 -->
<select id="SelectStudent" resultType="com.po.Student">
        select * from student where name=#{0}
</select>

<!-- 查询表中所有学生信息 -->
<select id="SelectStudentList" resultType="com.po.Student">
    select * from student 
</select>

<!-- 根据姓名和年龄,插入新信息  -->
<insert id="InsertStudent">
 insert into student(name,age) values(#{0},#{1})
</insert>

<!-- 根据传入id删除信息  -->
<delete id="DeleteStudent">
 delete from student where id=#{0}
</delete>

<!-- 根据名字更改年龄  -->
<update id="UpdateStudent">
 update student set age=#{1} where name=#{0}
</update>

</mapper>

在src文件加下创建conf.xml用来配置数据库连接和注册xml映射文件

conf.xml

<?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.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="960404" />
            </dataSource>
        </environment>
    </environments>
      <mappers>
        
        <!-- 注册StudentMapper.xml文件, 
        StudentMapper.xml位于com.mapping这个包下,所以resource写成com.mapping-->
        <mapper resource="com.mapping"/>
 </mappers>
 </configuration>

在src下创建test.java进行测试:

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.mapping.StudentMapper;
import com.po.Student;


public class test {
  public static void main(String[] args) {
	  //mybatis的配置文件
      String resource = "conf.xml";
      //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
      InputStream is = test.class.getClassLoader().getResourceAsStream(resource);
      //构建sqlSession的工厂
      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
      //Reader reader = Resources.getResourceAsReader(resource); 
      //构建sqlSession的工厂
      //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
      //创建能执行映射文件中sql的sqlSession
      SqlSession session = sessionFactory.openSession();
      StudentMapper mapper=session.getMapper(StudentMapper.class);//获取对应的接口
      //接下来就是调用接口的方法来调用映射的sql的语句
      mapper.InsertStudent("宝贝",20);//插入一条信息
      mapper.InsertStudent("小宝贝",21);//插入一条信息
      mapper.InsertStudent("么么哒小宝贝",22);//插入一条信息
      List<Student>list=mapper.SelectStudentList();
      System.out.println("---------------添加信息后-------------");
      for (Student s:list)
      System.out.println(s.getId()+" "+s.getName()+"  "+s.getAge());
      Student student=mapper.SelectStudent("宝贝");
      System.out.println("---------------查找宝贝信息------------");
      System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
      mapper.DeleteStudent(1);//将编号为1的删除
      System.out.println("--------------删除信息后---------------");
      list=mapper.SelectStudentList();
      for (Student s:list)
      System.out.println(s.getId()+" "+s.getName()+"  "+s.getAge());
      mapper.UpdateStudent("宝贝",21);//根据名字修改年龄
      System.out.println("--------------更新信息后---------------");
      list=mapper.SelectStudentList();
      for (Student s:list)
      System.out.println(s.getId()+" "+s.getName()+"  "+s.getAge());
      System.out.println("----------这时候数据库是没有更新的,需要提交事务------");
      session.commit();
      System.out.println("----------数据库信息已更新,快看看吧---------------");
      session.close();
      
}
}

运行结果:

---------------添加信息后-------------
1 宝贝  20
2 小宝贝  21
3 么么哒小宝贝  22
---------------查找宝贝信息------------
1 宝贝 20
--------------删除信息后---------------
2 小宝贝  21
3 么么哒小宝贝  22
--------------更新信息后---------------
2 小宝贝  22
3 么么哒小宝贝  22
----------这时候数据库是没有更新的,需要提交事务------
----------数据库信息已更新,快看看吧---------------




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengsigaoju/article/details/72650505
个人分类: 框架 数据库
上一篇redis的消息队列和发布订阅demo
下一篇南邮大作业----文本处理与加密软件
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭