首先在pom.xml中添加依賴
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
在resources中新建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>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdemo?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
? ? <environments default="test">
? ? ? ? <environment id="test">
? ? ? ? ? ? <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/ssmdemo" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
<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 resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
在resource下新建文件夾mappers诫惭,在新建文件UserMapper.xml
<?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="dao.UserMapper">
1.#{},預(yù)編譯的方式preparedstatement荚醒,使用占位符替換串慰,防止sql注入,一個(gè)參數(shù)的時(shí)候,任意參數(shù)名可以接收
2.${},普通的Statement毡琉,字符串直接拼接蕾久,不可以防止sql注入,一個(gè)參數(shù)的時(shí)候歌豺,必須使用${value}接收參數(shù)
-->
? ? <select id="queryUserByTableName" resultType="mabatismain.User">
select* from ${tableName}
</select>
<select id="login" resultType="mabatismain.User">
select* from tb_user where user_name = #{userName} and password = #{password}
</select>
id:唯一標(biāo)識(shí)推穷,隨便寫(xiě),在同一個(gè)命名空間下保持唯一类咧,使用動(dòng)態(tài)代理之后要求和方法名保持一致
resultType:sql語(yǔ)句查詢結(jié)果集的封裝類(lèi)型馒铃,使用動(dòng)態(tài)代理之后和方法的返回類(lèi)型一致;resultMap:二選一
parameterType:參數(shù)的類(lèi)型痕惋,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致
-->
? ? <select id="queryUserById" resultType="mabatismain.User">
select* from tb_user where id = #{id}
</select>
<select id="queryUserAll" resultType="mabatismain.User">
select* from tb_user
</select>
id:唯一標(biāo)識(shí)区宇,隨便寫(xiě),在同一個(gè)命名空間下保持唯一值戳,使用動(dòng)態(tài)代理之后要求和方法名保持一致
parameterType:參數(shù)的類(lèi)型议谷,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致
useGeneratedKeys:開(kāi)啟主鍵回寫(xiě)
keyColumn:指定數(shù)據(jù)庫(kù)的主鍵
keyProperty:主鍵對(duì)應(yīng)的pojo屬性名
-->
? ? <insert id="insertUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id"
? ? ? ? ? ? parameterType="mabatismain.User">
INSERT INTO tb_user (
id,
user_name,
password,
name,
age,
sex,
birthday,
created,
updated
)
VALUES
(
null,
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
NOW(),
NOW()
);
</insert>
更新的statement
id:唯一標(biāo)識(shí),隨便寫(xiě)堕虹,在同一個(gè)命名空間下保持唯一卧晓,使用動(dòng)態(tài)代理之后要求和方法名保持一致
parameterType:參數(shù)的類(lèi)型,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致
-->
? ? <update id="updateUser" parameterType="mabatismain.User">
UPDATE tb_user
<trim prefix="set" suffixOverrides=",">
<if test="userName!=null">user_name = #{userName},</if>
<if test="password!=null">password = #{password},</if>
<if test="name!=null">name = #{name},</if>
<if test="age!=null">age = #{age},</if>
<if test="sex!=null">sex = #{sex},</if>
<if test="birthday!=null">birthday = #{birthday},</if>
updated = now(),
</trim>
WHERE
(id = #{id});
</update>
刪除的statement
id:唯一標(biāo)識(shí)赴捞,隨便寫(xiě)禀崖,在同一個(gè)命名空間下保持唯一,使用動(dòng)態(tài)代理之后要求和方法名保持一致
parameterType:參數(shù)的類(lèi)型螟炫,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致
-->
? ? <delete id="deleteUserById" parameterType="java.lang.String">
delete from tb_user where id=#{id}
</delete>
</mapper>
新建 UserMapper.class文件
package dao;
import mabatismain.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper {
/**
* 登錄(直接使用注解指定傳入?yún)?shù)名稱(chēng))
? ? * @param userName
? ? * @param password
? ? * @return
? ? */
? ? public User login(@Param("userName") String userName,@Param("password") String password);
/**
* 根據(jù)表名查詢用戶信息(直接使用注解指定傳入?yún)?shù)名稱(chēng))
? ? * @param tableName
? ? * @return
? ? */
? ? public List queryUserByTableName(@Param("tableName") String tableName);
/**
* 根據(jù)Id查詢用戶信息
? ? * @param id
? ? * @return
? ? */
? ? public User queryUserById(String id);
/**
* 查詢所有用戶信息
? ? * @return
? ? */
? ? public List queryUserAll();
/**
* 新增用戶信息
? ? * @param user
? ? */
? ? public void insertUser(User user);
/**
* 根據(jù)id更新用戶信息
? ? * @param user
? ? */
? ? public void updateUser(User user);
/**
* 根據(jù)id刪除用戶信息
? ? * @param id
? ? */
? ? public void deleteUserById(String id);
}
創(chuàng)建UserMapper接口測(cè)試類(lèi)
package test;
import dao.UserMapper;
import mabatismain.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.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import static org.junit.Assert.*;
public class UserMapperTest {
public UserMapperuserMapper;
@Before
? ? public void setUp()throws Exception {
String res="mybatis-config.xml";
InputStream inputStream= Resources.getResourceAsStream(res);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession=sqlSessionFactory.openSession(true);
userMapper=sqlSession.getMapper(UserMapper.class);
}
@Test
? ? public void testQueryUserByTableName() {
List userList =this.userMapper.queryUserByTableName("tb_user");
for (User user : userList) {
System.out.println(user);
}
}
@Test
? ? public void testLogin() {
System.out.println(this.userMapper.login("hj","123456"));
}
@Test
? ? public void testQueryUserById() {
System.out.println(this.userMapper.queryUserById("1"));
}
@Test
? ? public void testQueryUserAll() {
List userList =this.userMapper.queryUserAll();
for (User user : userList) {
System.out.println(user);
}
}
@Test
? ? public void testInsertUser() {
User user =new User();
user.setAge(20);
user.setBirthday(new Date());
user.setName("大神");
user.setPassword("123456");
user.setSex(2);
user.setUserName("bigGod222");
this.userMapper.insertUser(user);
System.out.println(user.getId());
}
@Test
? ? public void testUpdateUser() {
User user =new User();
user.setBirthday(new Date());
user.setName("靜靜");
user.setPassword("123456");
user.setSex(0);
user.setUserName("Jinjin");
user.setId("1");
this.userMapper.updateUser(user);
}
@Test
? ? public void testDeleteUserById() {
this.userMapper.deleteUserById("1");
}
}