@[TOC]#快速入门
##项目搭建
###mysql建表
CREATE DATABASE mybatis;
USE mybatis;
DROP TABLE IF EXISTS 'user';
CREATE TABLE 'user' (
'id' int(20) NOT NULL,
'name' varchar(30) DEFAULT NULL,
'pwd' varchar(30) DEFAULT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into 'user'('id','name','pwd') values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
###IEDA新建Maven项目
###pom文件加入依赖,文件过滤
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<build>
<!--maven资源文件静态过滤关闭-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
##配置文件
###全局配置文件mybatis-config.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="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 从配置文件中加载属性 -->
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.user}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
</configuration>
###数据库连接配置文件db.porerties
(注意;db.password改成自己的数据库root用户登录密码)
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
db.user=root
db.password=333
##编写实体类和dao层接口
实体类User
package com.mu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int id;
private String name;
private String pwd;
}
接口UserDao
package com.mu.dao;
import com.mu.pojo.User;
import java.util.List;
public interface UserDao {
//查询所有用户
List<User> selectUser();
//添加用户
int insertUser(User User);
//根据名字删除用户
int deleteUser(String name);
}
##xml方式实现
创建接口的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.mu.dao.UserDao">
<select id="selectUser" resultType="com.mu.pojo.User">
SELECT * FROM user
</select>
<insert id="insertUser" parameterType="com.mu.pojo.User">
INSERT INTO user (id,name,pwd) VALUES (#{id},#{name},#{pwd});
</insert>
<delete id="deleteUser" parameterType="String">
DELETE FROM user WHERE name = #{name}
</delete>
</mapper>
全局配置文件mybatis-config.xml中加载mapper文件,
测试
public class MyTest {
private SqlSessionFactory sqlSessionFactory;
//加载全局配置文件
@Before
public void init() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
}
@Test
public void Test() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> UserList = mapper.selectUser();
for (User user : UserList) {
System.out.println(user);
};
mapper.insertUser(new User(10,"钱七","12345hhb"));
mapper.deleteUser("王五");
System.out.println("-------------------->>>>>>>>");
List<User> UserList2 = mapper.selectUser();
for (User user2 : UserList2) {
System.out.println(user2);
};
sqlSession.close();
}
}
##注解方式实现
再编写一个接口UserDao2,在接口方法上使用注解
package com.mu.dao;
import com.mu.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface UserDao2 {
//根据id查询用户
@Select("select * from user where id = #{id}")
User selectByid(@Param("id") int id);
//增加一个用户
@Insert("insert into User(id,name,pwd) values(#{id},#{name},#{pwd})")
int addUser(User User);
//根据名字修改用户密码
@Update("update user set pwd = #{pwd} where name = #{name}")
int updateByname(@Param("name") String name,@Param("pwd") String pwd);
}
在全局配置文件mybatis-config.xml中加载这个接口,
注意class后面跟的是接口的全限定名称
在刚才的测试类中加入测试2
@Test
public void Test2() {
SqlSession sqlSession2 = sqlSessionFactory.openSession();
UserDao2 mapper2 = sqlSession2.getMapper(UserDao2.class);
mapper2.addUser(new User(20,"朱八","aaa2"));
//增删改操作需要提交事务,不然不会提交到数据库
sqlSession2.commit();
User user2 = mapper2.selectByid(20);
System.out.println(user2);
System.out.println("-------------------->>>>>>>>");
//根据名字更改密码
mapper2.updateByname("朱八","aaaaa");
sqlSession2.commit();
System.out.println(mapper2.selectByid(20));
sqlSession2.close();
}