#建立mybatis数据库 create database mybatis; #使用数据库 use mybatis; #建立表,有id, name, age create table user ( ID INT(11) PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(18) DEFAULT NULL, AGE INT(11) DEFAULT NULL )
package com.test.mybatistest;
public class User { private int ID; private String name; private int age; public User(int id, String name, int age){ this.ID = id; this.name = name; this.age = age; } public void setID(int ID) { this.ID = ID; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public int getID() { return ID; } public String getName() { return name; } public int getAge() { return age; } }
<?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.test.springtest.User">
<select id="GetUserByID" parameterType="int" resultType="com.test.springtest.dao.MUser"> select * from `student` where id = #{id} </select>
<insert id="saveUser" parameterType="com.test.springtest.User" useGeneratedKeys="true"> insert into student(NAME,AGE) values (#{name},#{age}) </insert>
</mapper>
具体解释:mysql
<mapper namespace="com.test.springtest.User"
为这个mapper指定一个惟一的namespace,它习惯上设置为:“包名+sql映射文件名”,这样能够保值名的惟一。spring
<select id="GetUserByID" parameterType="int" resultType="com.test.mybatistest.User">
id:这个select语句的id
parameterType:指定查询是传入的参数类型
resultType:即返回结果集的类型,这理指定为User类型sql
select * from `student` where id = #{id}
一条select语句数据库
useGeneratedKeys="true"
使用数据库的自动增加策略session
<?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>
<!--环境配置,链接的数据库,这里使用的是MySQL-->
<environments default="mysql">
<environment id="mysql">
<!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
<transactionManager type="JDBC"></transactionManager>
<!--dataSource 指链接源配置,POOLED是JDBC链接对象的数据源链接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybbs"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<mappers>
<!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名,
若是在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
<mapper resource="User.xml"></mapper>
</mappers>
</configuration>
Mybatis的配置文件默认命名为mybatis-config.xml,程序运行前须要加载这个文件;mybatis
第一行是XML声明,指定字符集;app
<configuration>:Mybatis配置文件的根元素为测试
<environment>:用来配置Mybatis的环境,即链接的数据库。ui
<transationManager>:配置Mybatis的事务管理this
<dataSource>:数据源,Mybatis推荐使用数据源(维持着一个链接池,而不用每次链接都开启一个链接)来管理数据库链接。而dataSource下的属性相信你已经懂了(若是你学过JDBC的配置)
package com.test.springtest.test; public class Test{ public static void main(String[] args){ //读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //初始化mybatis,建立SqlSessionFactory类实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //建立Session实例
SqlSession session = sqlSessionFactory.openSession(); User user = new User(6, "张三", 33); //插入数据
session.insert("com.test.springtest.User.saveUser",user); //提交事务
session.commit(); //关闭Session
session.close(); } }
说明:
程序先读取配置文件,而后经过SqlSession对象来操做持久化对象。
为了使用Mybatis进行持久化操做,能够把上述程序总结以下操做步骤:
1)编写持久化类(e.g. User)和其持久化操做的Mapper.xml(e.g. User.xml),并在mapper.xml中定义SQL语句
2)获取SqlSessionFactory
3)获取SqlSession
4)用面向对象的方式操做数据库(session.insert()、session.update()、session.select()。。。。)
5)提交事务,关闭SqlSession