<!--MyBatis核心jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.2</version>
</dependency>
<!--MySQL配置-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf8</encoding>
</configuration>
</plugin>
</plugins>
</build>
2.接下来 我们要搭好练习项目架构(如图所示:)
3.现在我们来配置Mybatis.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>
<properties
resource="config.properties">
</properties>
<environments
default="development">
<environment
id="development">
<transactionManager
type="JDBC"/>
<dataSource
type="POOLED">
<property
name="driver"
value="${driver}"/>
<property
name="url"
value="${url}"/>
<property
name="username"
value="${username}"/>
<property
name="password"
value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper
class="haha.UserDao"/>
<mapper
resource="user.xml"/>
</mappers>
</configuration>
User有三个属性:name,age和id,重写toString()方法便于调试。
public class User {
String name;
Integer age;
Integer id;
public User(){}
public User(String name,int
age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name
= name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age
= age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id
= id;
}
@Override
public
String toString() {
return String.format("(id:%d,name:%s,age:%d)",
id, name,
age);
}
}
UserDao接口有两个功能:插入、查询全部
public interface UserDAO {
@Insert("insert into user(name,age) value (#{name},#{age})")
int insert_withoutPrimaryKey(@Param("name") String name,
@Param("age")
int age);
int insert_useGeneratedKey(@Param("user") User user);
int insert_selectKey(@Param("user") User user);
@Insert("insert into user(name,age) value(#{user.name},#{user.age})")
@SelectKey(statement = "select last_insert_id()"
,keyProperty = "user.id"
,before = false,resultType =
int.class)
int insert_selectKeyAnotation(@Param("user") User user);
@Select("select*from user")
List<User> getAll();
}
<?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="haha.UserDao">
<insert
id="insert_useGeneratedKey"
parameterType="haha.User"
useGeneratedKeys="true"
keyProperty="user.id">
insert into user set id=#{user.id},name=#{user.name},age=#{user.age}
</insert>
<insert
id="insert_selectKey"
parameterType="haha.User">
<selectKey
keyProperty="user.id"
keyColumn="id"
order="AFTER"
resultType="int">
SELECT last_insert_id()
</selectKey>
insert into user(name,age) VALUE (#{user.name},#{user.age})
</insert>
</mapper>
7.编写测试类
package
haha;
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;
import
java.util.List;
public class
UserService {
public static void
main(String[] args)
throws
IOException {
String resource =
"mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder =
new
SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
SqlSession session = factory.openSession();
UserDao dao = session.getMapper(UserDao.class);
//使用默认主键
int
affectedRows = dao.insert_withoutPrimaryKey("张三",
25);
System.out.println(affectedRows);
//使用useGeneratedKey,将主键注入到user.id中
User u =
new
User("李四",
17);
affectedRows = dao.insert_useGeneratedKey(u);
System.out.println(affectedRows
+ " "
+ u.getId());
//使用selectKey执行在插入之前或之后执行查询语句
affectedRows = dao.insert_selectKey(u);
System.out.println(affectedRows
+ " "
+ u.getId());
//使用selectKey注解的方式
affectedRows = dao.insert_selectKeyAnotation(u);
System.out.println(affectedRows
+ " "
+ u.getId());
session.commit();
List<User> a = dao.getAll();
a.forEach(System.out::println);
}
}