步骤分析
1. 创建maven项目
自动导入
创建成功
2. 在pom.xml里导包
- 导入数据库jar包
- 导入mybatis框架的jar包
点我获取包资源地址
3. 创建resource文件夹
用来存放配置文件(注意:resource文件夹应该/src/main文件下面,main文件下面一共有两个文件夹,一个是java,一个是resource)
将resources文件夹变为resource属性
4. 加入配置文件
在resources目录下选中上面创建的模板,然后输入xml文件名字mybatis.cfg.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>
<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
5. mybatis-cfg.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>
<environments default="test1">
<environment id="test1">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai"></property>
<property name="username" value="root"></property>
<property name="password" value="cqrjxk39"></property>
</dataSource>
</environment>
</environments>
</configuration>
6. 创建数据表user的映射
public class User {
private int uid;
private String username;
private int age;
private String hobby;
public User() {
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", age=" + age +
", hobby='" + hobby + '\'' +
'}';
}
public User(int uid, String username, int age, String hobby) {
this.uid = uid;
this.username = username;
this.age = age;
this.hobby = hobby;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
在mybatis-cfg.xml配置文件中添加别名,减少代码数量
7.写Usermapper.Xml
实现对数据库的增删改查功能
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njdf.mapper.UserMapper">
<sql id="sql1">select * from user </sql>
<sql id="sql2">uid</sql>
<!--使用别名-->
<select id="find1" resultType="User">
<include refid="sql1"></include>
</select>
<select id="find2" resultType="int">
select <include refid="sql2"></include> from user
</select>
<select id="find" resultType="com.njdf.bean.User">
select * from user
</select>
<insert id="add" parameterType="com.njdf.bean.User">
insert into user values (null ,#{username},#{age},#{hobby})
</insert>
<update id="update" parameterType="com.njdf.bean.User">
update user set username = #{username},age = #{age},hobby = #{hobby} where uid = #{uid}
</update>
<delete id="del" parameterType="int">
delete from user where uid =#{id}
</delete>
<select id="sel" parameterType="com.njdf.bean.User" resultType="com.njdf.bean.User">
select * from user where uid = #{uid}
</select>
<!--传入类型不区分大小写-->
<delete id="d2" parameterType="map">
delete from user where username = #{key1} and age = #{key2}
</delete>
<select id="sele" parameterType="string" resultType="com.njdf.bean.User">
select * from user where username like "%"#{str}"%";
</select>
<select id="dele" parameterType="int">
delete from user where uid in
<foreach collection="array" open="(" close=")" separator="," item="index">
#{index}
</foreach>
</select>
<!--动态使用sql语句-->
<select id="dysel" parameterType="user" resultType="user">
select * from user
<where>
<if test="username != null">and username = #{username}</if>
<if test="age != null">and age = #{age}</if>
<if test="hobby != null">and hobby = #{hobby}</if>
</where>
</select>
<!--只需要使用一个标签,如果说这个标签为null,就使用下个标签-->
<select id="dysele" parameterType="user" resultType="user">
select * from user
<where>
<choose>
<when test="username != null">username = #{username}</when>
<when test="age != null">age = #{age}</when>
<when test="hobby != null">hobby = #{hobby}</when>
<otherwise> id = #{uid}</otherwise>
</choose>
</where>
</select>
<!--设置返回值类型-->
<resultMap id="userhaha" type="user">
<!--首先主键标签要用id,property属性是映射类的属性名 column是对应数据库的字段名-->
<id property="uid" column="uid"></id>
<result property="username" column="username"></result>
<result property="age" column="age"></result>
<result property="hobby" column="hobby"></result>
<!--对应多对一使用association-->
<association property="de" javaType="com.njdf.bean.Department">
<id property="departmentId" column="departmentId"></id>
<result property="departmentName" column="departmentName"></result>
</association>
<!--对应一对多使用association-->
<collection property="books" javaType="list" ofType="com.njdf.bean.Books">
<id property="bookId" column="bookId"></id>
<result property="bookName" column="bookName"></result>
<result property="uid" column="uid"></result>
</collection>
</resultMap>
<select id="userde" parameterType="int" resultMap="userhaha">
select * from user where uid = #{id}
</select>
<select id="a" parameterType="int" resultMap="userhaha">
select * from user u left join department d on u.departmentId = d.departmentId where u.uid = #{m}
</select>
<select id="b" parameterType="int" resultMap="userhaha">
select * from user u,department d,Books b where u.departmentId = d.departmentId and u.uid = b.uid and u.uid = #{x}
</select>
</mapper>
8. 把写好的mapper配置到mybatis-cfg.xml里面去
9. 在pom.xml中,把xml文件加入编译
否则会报错
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
10.写test类
import com.njdf.bean.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;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AppTest {
@Test
public void Test1() throws IOException {
System.out.println("hello world!");
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
User user = new User("李四",22,"喝饮料");
sqlSession.insert("com.njdf.mapper.UserMapper.add",user);
User user1 = new User(1,"张三",23,"唱歌");
sqlSession.update("com.njdf.mapper.UserMapper.update",user1);
sqlSession.delete("com.njdf.mapper.UserMapper.del",5);
Map<String,Object> map = new HashMap<String,Object>();
map.put("key1","wangwu");
map.put("key2",25);
sqlSession.delete("com.njdf.mapper.UserMapper.d2",map);
int[] Array = {4,5,7,8};
sqlSession.delete("com.njdf.mapper.UserMapper.dele",Array);
String str = "三";
List<User> users1 = sqlSession.selectList("com.njdf.mapper.UserMapper.sele", str);
for (User u:users1
) {
System.out.println(u);
}
System.out.println("============================================");
List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.find1");
for (User u:users
) {
System.out.println(u);
}
System.out.println("===============================================");
User user3 = new User(2);
User u = sqlSession.selectOne("com.njdf.mapper.UserMapper.sel", user3);
System.out.println(u);
System.out.println("===================================================");
List<Integer> indexs = sqlSession.selectList("com.njdf.mapper.UserMapper.find2");
for (int i:indexs
) {
System.out.println(i);
}
System.out.println("====================================================");
User user2 = new User("zhangsan");
List<User> users2 = sqlSession.selectList("com.njdf.mapper.UserMapper.dysel",user2);
for (User u1:users2
) {
System.out.println(u1);
}
User user2 = new User("zhangsan");
List<User> users2 = sqlSession.selectList("com.njdf.mapper.UserMapper.dysele",user2);
for (User u1:users2
) {
System.out.println(u1);
}
List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.userde",1);
System.out.println(users);
List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.a", 2);
System.out.println(users);
List<User> users = sqlSession.selectList("com.njdf.mapper.UserMapper.b", 2);
System.out.println(users);
//事务提交
sqlSession.commit();
//缓存清理
sqlSession.clearCache();
}
}