package com.qfedu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int uid;
private String username;
private String password;
private int age;
private String addr;
}
IUserDao.java
package com.qfedu.dao;
import com.qfedu.pojo.User;
import java.util.List;
public interface IUserDao {
/**
* 查詢所有的User對(duì)象
* @return User對(duì)象的列表
*/
List<User> getAllUsers();
/**
* 新增一個(gè)User對(duì)象
* @param u 要新增的用戶對(duì)象
* @return 受影響的行數(shù)
*/
int saveUser(User u);
}
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">
<!--
第二種實(shí)現(xiàn)mybatis的方式為:接口+xml方式
這種方式有特別的要求
1. namespace必須是接口的全路徑
2. 每個(gè)節(jié)點(diǎn)的id必須是接口中的方法名
3. 該接口中的方法不允許重載怎抛,否則namespace+id將不唯一
4. 注意該接口中的增刪改的方法的返回值痕貌,最好使用int
-->
<mapper namespace="com.qfedu.dao.IUserDao">
<!--
ID為接口中的方法名
-->
<select id="getAllUsers" resultType="User">
select * from user
</select>
<insert id="saveUser" >
insert into user values(null, #{username}, #{password}, #{age}, #{addr})
</insert>
<update id="updateUser">
update user set username = #{username}, password =#{password}, age=#{age}, addr = #{addr} where uid = #{uid}
</update>
</mapper>
SessionUtils.java
第二種實(shí)現(xiàn)mybatis的方式為:接口+xml方式
這種方式有特別的要求
1. namespace必須是接口的全路徑
2. 每個(gè)節(jié)點(diǎn)的id必須是接口中的方法名
3. 該接口中的方法不允許重載全景,否則namespace+id將不唯一
4. 注意該接口中的增刪改的方法的返回值,最好使用int
package com.qfedu.util;
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;
public class SessionUtils {
private static SqlSession mSession = null;
private static SqlSessionFactory mFactory = null;
static {
try {
mFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 獲取SqlSession對(duì)象
* @return
*/
public static SqlSession getSession(){
mSession = mFactory.openSession(true);
return mSession;
}
/**
* 關(guān)閉SqlSession對(duì)象
* @param session 要關(guān)閉的SqlSession對(duì)象
*/
public static void closeSession(SqlSession session){
if(session != null){
session.close();
session = null;
}
}
}
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">
<!--
該配置文件中包含一個(gè)configuration節(jié)點(diǎn)
里面有配置信息 分別是環(huán)境和映射
其中環(huán)境里有datasource,里面有我們熟悉的連接數(shù)據(jù)庫(kù)的四個(gè)字符串
-->
<configuration>
<!--
引入db的配置文件信息雇庙,后面用到的四個(gè)連接字符串就可以直接使用 ${}的方式來(lái)動(dòng)態(tài)引入
-->
<properties resource="db.properties">
</properties>
<!--
給當(dāng)前mybatis項(xiàng)目添加日志功能,該STDOUT_LOGGING值的好處是不用添加第三方j(luò)ar包就可以有日志的輸出
-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<!--<typeAlias type="com.qfedu.pojo.Order" alias="abc" />-->
<package name="com.qfedu.pojo" />
</typeAliases>
<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="${user}"/>
<property name="password" value="${pass}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/qfedu/dao/UserMapper.xml"/>
</mappers>
</configuration>
TestUser.java
package com.qfedu.pojo;
import org.junit.Test;
public class TestUser {
@Test
public void testUser(){
User u = new User();
u.setUid(1);
u.setUsername("chenggang");
u.setPassword("888888");
u.setAddr("shenzhen");
u.setAge(18);
System.out.println(u);
}
}
TestUserDao.java
package com.qfedu.pojo;
import com.qfedu.dao.IUserDao;
import com.qfedu.util.SessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
public class TestUserDao {
private SqlSession session = null;
@Before
public void setUp(){
session = SessionUtils.getSession();
}
@After
public void tearDown(){
SessionUtils.closeSession(session);
}
@Test
public void testGetAllUsers(){
IUserDao mapper = session.getMapper(IUserDao.class);
List<User> users = mapper.getAllUsers();
for (User u : users) {
System.out.println(u);
}
}
@Test
public void testSaveUser(){
IUserDao userDao = session.getMapper(IUserDao.class);
User u = new User(17, "liuchang", "888888", 20, "guangzhou");
int result = userDao.saveUser(u);
System.out.println(result);
}
}