首先在pom.xml中加入依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 不写版本号会识别不出SqlSessionFactory-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
然后在resource中建立一个Configuration.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>
<!-- mybatis别名定义 alias别名名称,用package的别名就是包下实体类的名称-->
<!--第二种方法更好-->
<typeAliases>
<!--<typeAlias type="com.lixin.mybatis.User" alias="User"/>-->
<package name="com.lixin.mybatis"/>
</typeAliases>
<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://127.0.0.1:3306/test" />
<property name="username" value="root"/>
<property name="password" value="115600LX"/>
</dataSource>
</environment>
</environments>
<!-- mybatis的mapper文件,每个xml配置文件对应一个接口 -->
<mappers>
<!-- 注册自定义的映射文件 -->
<mapper resource="mappers/user.xml"/>
</mappers>
</configuration>
创建实体类User
package com.lixin.mybatis;
public class User {
private int id;
private String username;
private int sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
}
建立resource-mappers-user.xml实现对数据的增删改查(映射文件)
在mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。-------Mapper文件
<?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.lixin.mybatis.IUserOperaton">
<select id="findUserById" parameterType="int" resultType="User">
SELECT * FROM user1 WHERE id = #{id}
</select>
<select id="findAllUser" resultType="User">
SELECT * FROM user1;
</select>
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user1(id,username,sex,age) values (#{id},#{username},#{sex},#{age})
</insert>
<delete id="deleteUser" parameterType="int">
delete from user1 where id=#{id}
</delete>
</mapper>
创建接口类IUserOperation
IUserOperation为操作接口,函数名和mybatis的xml配置文件中的操作id名对应。
package com.lixin.mybatis;
import java.util.List;
public interface IUserOperaton {
public User findUserById(int id);
public List<User>findAllUser();
public void addUser(User user);
public void deleteUser(int id);
}
编写Mybatis工具类Util
用静态代码块进行创建SqlSessionFactory,只在类加载时创建一次,保证了整个程序运行时只有一个工厂实例。
package com.lixin.mybatis;
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.InputStream;
import java.io.Reader;
import java.util.List;
public class Util {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
private User user;
private static int Ret;
//从xml中获取sqlSessionFactory
// 创建sqlSessionFactory对象,因为整个应用程序只需要一个实例对象,故用静态代码块
static {
try {
Reader reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
}
//返回SessionFactory
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
//返回Session;
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
/*
isAutoCommit:
true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()
*/
public static SqlSession getSqlSession(boolean isAutoCommit) {
return getSqlSessionFactory().openSession(isAutoCommit);
}
}
测试类--Test
package com.lixin.mybatis;
import org.apache.ibatis.session.SqlSession;
import java.util.ArrayList;
import java.util.List;
public class Test {
public void findAllUsers(){
SqlSession sqlSession =Util.getSqlSession(true);
IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
List<User>users=usermapper .findAllUser() ;
for(User u:users ){
System.out .println("ID:"+u.getId() +";Usernamr:"+u.getUsername() +";Sex:"+u.getSex() +";Age:"+u.getAge() );
}
sqlSession .close() ;
}
public void addUser(){
SqlSession sqlSession =Util.getSqlSession(true);
IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
User newuser =new User() ;
newuser .setUsername("李鑫");
newuser .setAge(18);
newuser.setSex(2);
usermapper.addUser(newuser );
sqlSession .close() ;
}
public void deleteUser(int id){
SqlSession sqlSession =Util.getSqlSession(true);
IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
usermapper .deleteUser(id);
sqlSession .close() ;
}
public void updateUser(){
SqlSession sqlSession =Util.getSqlSession(true);
IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
User newuser=new User() ;
newuser.setId(1);
newuser .setSex(1) ;
newuser .setUsername("秦松");
newuser .setAge(22);
usermapper .updateUser(newuser );
sqlSession .close() ;
}
}
主函数
package com.lixin.mybatis;
import org.apache.ibatis.session.SqlSession;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@SpringBootApplication
public class MybatisApplication {
public static void main(String[] args) {
Test test=new Test() ;
test.findAllUsers() ;//查询所有User
test.addUser() ;//新增User
test.deleteUser(3);//根据id号删除User
test.updateUser() ;//更新User信息
}
}