1、添加相应的jar包
【mybatis】 mybatis-3.1.1.jar
【MYSQL驱动包】 mysql-connector-java-5.1.7-bin.jar
2、创建数据库mybatis 和表users
2、使用MyBatis查询表中的数据
1、在src目录下创建conf.xml配置文件文件,如下图所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3 <configuration>
4 <environments default="development">
5 <environment id="development">
6 <transactionManager type="JDBC" />
7 <!-- 配置数据库连接信息 -->
8 <dataSource type="POOLED">
9 <property name="driver" value="com.mysql.jdbc.Driver" />
10 <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
11 <property name="username" value="root" />
12 <property name="password" value="root" />
13 </dataSource>
14 </environment>
15 </environments>
16
17 </configuration>
2、定义表所对应的实体类;(模型model创建的实体类作用:承载数据。)
1 package me.gacl.domain;
2
7 public class User {//实体类的属性和表的字段名称一一对应
10 private int id;
11 private String name;
12 private int age;
13
14 public int getId() {
15 return id;
16 }
17
18 public void setId(int id) {
19 this.id = id;
20 }
21
22 public String getName() {
23 return name;
24 }
25
26 public void setName(String name) {
27 this.name = name;
28 }
29
30 public int getAge() {
31 return age;
32 }
33
34 public void setAge(int age) {
35 this.age = age;
36 }
37
38 @Override
39 public String toString() {
40 return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
41 }
42 }
3、定义操作users表的,sql映射文件userMapper.xml。
创建一个包专门存放sql映射文件。
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 例如namespace="me.gacl.mapping.userMapper" 就是"包名+文件名"。
6 <mapper namespace="me.gacl.mapping.userMapper">
(me包名)+(userMapper文件名)userMapper.xml
7 <!--在select标签使用时,标签的id属性为getUser必须是唯一不重复
8 parameterType 查询时用的参数类型,resultType 返回的结果集类型
9 如resultType="me.User"表示将查询结果封装成User类的对象返回。
10 (User类就是users表所对应的java实体类)
11 -->
12 <!--1查询SQL语句-->
15 <select id="getUser" parameterType="int" resultType="me.User">
17 select * from users where id=#{id}
18 </select>
<sql id="myId">id, std_name, std_Sex, std_Age, std_From </sql> <!--面向对象思想的封装的体现。-->
<!--1根据id查询SQL语句-->
<select id="selectStdById"
parameterType="int" resultType="student.stdInfo">
select <include refid="myId"/> from t_student where id = #{id}
</select>
<!--2增加 SQL语句 -->
<insert id="insert" parameterType="student.stdInfo">
insert into t_student (<include refid="myId"/>) values(#{Name},#{Sex},#{Age},#{From},#{logonName},#{logonPass})
</insert>
<!--3根据id修改SQL语句-->
<update id="updateStdById" parameterType="student.stdInfo">
update t_student set std_name=#{Name},std_sex=#{Sex},
std_age=#{Age},std_from=#{From},logon_name=#{LogonName},
logon_pass=#{logonPass} where id=#{id}
</update>
<!--4根据Id删除SQL语句 -->
<delete id="delStdById" parameterType="int">
delete from student where id=#{id}
</delete>
19 </mapper>
4、在conf.xml文件中注册userMapper.xml文件。
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3 <configuration>
4 <environments default="development">
5 <environment id="development">
6 <transactionManager type="JDBC" />
7 <!-- 配置数据库连接信息 -->
8 <dataSource type="POOLED">
9 <property name="driver" value="com.mysql.jdbc.Driver" />
10 <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
11 <property name="username" value="root" />
12 <property name="password" value="root" />
13 </dataSource>
14 </environment>
15 </environments>
16
17 <mappers>
18 <!-- 注册userMapper.xml文件 -->
19
20 <mapper resource="me/userMapper.xml"/>
21 </mappers>
22
23 </configuration>
5、编写测试代码:执行定义的select语句
创建一个Test1类,编写如下的测试代码:
package me;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test1 {
public static void main(String[] args) throws IOException {
String resource = "conf.xml";
//1.使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
//2.构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//3.创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的字符串
//执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
CREATE TABLE "jpt"."tb_user"
( "id" NUMBER(10,0) NOT NULL ENABLE,
"username" VARCHAR2(50 BYTE),
"pwd" VARCHAR2(50 BYTE),
"email" VARCHAR2(100 BYTE),
"question" VARCHAR2(45 BYTE),
"answer" VARCHAR2(45 BYTE),
"city" VARCHAR2(30 BYTE),
CONSTRAINT "PK_db_9griddiary" PRIMARY KEY ("id")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "USERS" ;