傳統方式mybatis的增,刪,改,查實現
準備工作
創建java Project項目,建庫建表插入數據,到數據庫中執行,導入jar包
添加mybatis的核心jar
添加mysql數據庫連接驅動
添加log4j日記需要的核心jar
在config目錄下添加 log4j.propreties代碼:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
開始編寫
在config目錄下添加 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>
<!-- environments 是配置多個jdbc環境
default表示使用的默認環境
-->
<environments default="development">
<!--
environment 標籤用來配置一個環境
id 是環境的標識
-->
<environment id="development">
<!--
transactionManager 配置使用什麼樣類型的數據庫事務管理
type="JDBC" 表示啓用事務,有commit和rollback操作
type="MANAGED" 表示不直接控制事務。交給容器處理幾乎不用。
-->
<transactionManager type="JDBC" />
<!--
dataSource標籤配置連接池
type="POOLED" 表示啓用數據庫連接池
type="UNPOOLED" 表示不啓用數據庫連接池
-->
<dataSource type="POOLED">
<!-- 連接數據庫的驅動類 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 數據庫訪問地址 -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<!-- 數據庫用戶名 -->
<property name="username" value="root" />
<!-- 數據庫密碼 -->
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 導入mapper配置文件 -->
<mapper resource="com/pojo/UserMapper.xml" />
</mappers>
</configuration>
創建一個UserDao接口
public interface UserDao {
// 保存用戶
public int saveUser(User user);
// 更新用戶
public int updateUser(User user);
// 根據id刪除用戶
public int deleteUserById(int id);
// 根據id搜索用戶
public User findUserById(int id);
// 搜索全部用戶
public List<User> findUsers();
}
編寫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">
<!--
namespace屬性是名稱空間的意思。
功能相當於 給配置文件定義一個包名。
一般情況下。可以寫兩種值,一種是對應類的全類名
一種情況是。對應類的處理接口全類名
-->
<mapper namespace="com.pojo.User">
<!-- 插入用戶
parameterType 屬性設置參數類型
id 爲使用的標識
-->
<insert id="saveUser" parameterType="com.pojo.User">
insert into t_user(last_name,sex) values(#{lastName},#{sex})
</insert>
<!-- 更新用戶
parameterType 屬性設置參數類型
id 爲使用的標識
-->
<update id="updateUser" parameterType="com.pojo.User">
update t_user
set
last_name = #{lastName},
sex = #{sex}
where
id = #{id}
</update>
<!-- 根據id刪除用戶
parameterType 屬性設置參數類型
id 爲使用的標識
-->
<delete id="deleteUserById" parameterType="int">
delete from t_user where id = #{id}
</delete>
<!-- 根據id搜索用戶
parameterType 屬性設置參數類型
id 爲使用的標識
resultType 屬性是返回的類型
-->
<select id="findUserById" parameterType="int" resultType="com.pojo.User">
select id,last_name lastName,sex from t_user where id = #{id}
</select>
<!-- 搜索全部用戶
id 爲使用的標識
resultType 屬性是返回的類型
-->
<select id="findUsers" resultType="com.pojo.User">
select id,last_name lastName,sex from t_user
</select>
</mapper>
UserDaoImpl代碼:
public class UserDaoImpl implements UserDao {
SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public int saveUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession();
int result = 0;
try {
result = sqlSession.insert("com.pojo.User.saveUser", user);
//提交事務
sqlSession.commit();
} finally {
sqlSession.close();
}
return result;
}
@Override
public int updateUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession();
int result = 0;
try {
result = sqlSession.update("com.pojo.User.updateUser", user);
//提交事務
sqlSession.commit();
} finally {
sqlSession.close();
}
return result;
}
@Override
public int deleteUserById(int id) {
SqlSession sqlSession = sqlSessionFactory.openSession();
int result = 0;
try {
result = sqlSession.delete("com.pojo.User.deleteUserById", id);
//提交事務
sqlSession.commit();
} finally {
sqlSession.close();
}
return result;
}
@Override
public User findUserById(int id) {
SqlSession sqlSession = sqlSessionFactory.openSession();
User result = null;
try {
result = sqlSession.selectOne("com.pojo.User.findUserById", id);
//提交事務
sqlSession.commit();
} finally {
sqlSession.close();
}
return result;
}
@Override
public List<User> findUsers() {
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> result = null;
try {
result = sqlSession.selectList("com.pojo.User.findUsers");
//提交事務
sqlSession.commit();
} finally {
sqlSession.close();
}
return result;
}
}
測試類:
public class UserDaoTest {
static UserDao userDao;
/**
* @BeforeClass標註的方法會在所有測試之前執行之前執行一次
* @throws Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
String url = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(url);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
userDao = new UserDaoImpl(sqlSessionFactory);
}
@Test
public void testSaveUser() {
userDao.saveUser(new User(null,"admins",0));
}
@Test
public void testUpdateUser() {
userDao.updateUser(new User(2, "admin", 1));
}
@Test
public void testDeleteUserById() {
userDao.deleteUserById(2);
}
@Test
public void testFindUserById() {
System.out.println(userDao.findUserById(1));
}
@Test
public void testFindUsers() {
System.out.println(userDao.findUsers());
}
}