【目錄】
1 通過ID去查詢一個用戶
2 通過用戶名模糊查找匹配的用戶列表
3 完成添加用戶
4 修改用戶
5 根據(jù)id刪除用戶
1 通過ID去查詢一個用戶



sqlMapConfig.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="development">
<environment id="development">
<!-- 使用jdbc的事務 -->
<transactionManager type="JDBC"/>
<!-- 使用連接池 連接數(shù)據(jù)庫 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/database?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射器的位置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
MyBatis主配置文件SqlMapConfig.xml的屬性可以參考這里。
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="UserMapper">
<!-- 根據(jù)id查詢用戶 -->
<select id="selectUserById" parameterType="Integer" resultType="com.test.bean.User">
select * from user where u_id = #{id}
</select>
</mapper>
映射文件屬性詳解可以參見官方文檔,這里不作過多解釋,后續(xù)文章或有介紹。
新建測試類HelloMyBatis.java,代碼如下:
package com.test.test;
import java.io.IOException;
import java.io.InputStream;
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 com.test.bean.User;
public class HelloMyBatis {
@Test
// 通過ID 查詢用戶
public void Test1() throws IOException {
//配置文件
String resource = "sqlMapConfig.xml";
//讀取配置文件
InputStream in = Resources.getResourceAsStream(resource );
//需要sqlSessionFactoryBulider
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//創(chuàng)建sqlSessionfactory
SqlSessionFactory ssf = ssfb.build(in);
//生產(chǎn)一個sqlSession
SqlSession session = ssf.openSession();
//操作數(shù)據(jù)庫
//selectOne參數(shù)1:要操作的sql語句(和Usermapper.xml里的namespace要一致) 參數(shù)2 sql語句的參數(shù)
User user = session.selectOne("UserMapper.selectUserById", 1);
System.out.println(user);
}
}
添加日志文件log4j.properties,代碼如下:
# 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
進行測試。

2 通過用戶名模糊查找匹配的用戶列表
模糊查詢會用到mybatis中的的#{}占位符和${}拼接符。注意他們的區(qū)別。
#{}占位符:占位
如果傳入的是基本類型,那么#{}中的變量名稱可以隨意寫
如果傳入的參數(shù)是pojo類型,那么#{}中的變量名稱必須是pojo中的屬性.屬性.屬性…
${}拼接符:字符串原樣拼接
如果傳入的是基本類型,那么${}中的變量名必須是value
如果傳入的參數(shù)是pojo類型,那么${}中的變量名稱必須是pojo中的屬性.屬性.屬性…
via:https://www.cnblogs.com/a8457013/p/7825412.html
使用拼接符容易造成sql注入,為了安全,我們一般用占位符進行模糊查詢。
UserMapper.xml中添加代碼如下:
<!-- 根據(jù)名字模糊查詢用戶 -->
<!-- #{} 占位符 盡量選用#{}來解決問題 '1' -->
<!-- ${} 字符串拼接 or 1=1 王 -->
<!-- order by ${} -->
<select id="selectUserByName" parameterType="String" resultType="com.test.bean.User">
<!-- SELECT * FROM USER WHERE u_username LIKE '%${value}%' -->
SELECT * FROM USER WHERE u_username LIKE "%"#{name}"%"
</select>
測試類HelloMyBatis.java中添加代碼如下:
import java.util.List;
@Test
//通過用戶名模糊查找匹配的用戶列表
public void Test2() throws IOException {
String resource = "sqlMapConfig.xml";
//讀取配置文件
InputStream in = Resources.getResourceAsStream(resource );
//需要sqlSessionFactoryBulider
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//創(chuàng)建sqlSessionfactory
SqlSessionFactory ssf = ssfb.build(in);
//生產(chǎn)一個sqlSession
SqlSession session = ssf.openSession();
//操作數(shù)據(jù)庫
List<User> list = session.selectList("UserMapper.selectUserByName", "老");
for (User u : list) {
System.out.println(u);
}
}
進行測試。

3 完成添加用戶
UserMapper.xml中添加代碼如下:
<!-- 添加用戶 -->
<insert id="insertUser" parameterType="com.test.bean.User">
insert into user values( null, #{u_username} , #{u_password}, #{u_sex}, #{u_createTime}, #{u_cid} )
</insert>
測試類HelloMyBatis.java中添加代碼如下:
import java.util.Date;
@Test
//添加用戶
public void Test3() throws IOException {
String resource = "sqlMapConfig.xml";
//讀取配置文件
InputStream in = Resources.getResourceAsStream(resource );
//需要sqlSessionFactoryBulider
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//創(chuàng)建sqlSessionfactory
SqlSessionFactory ssf = ssfb.build(in);
//生產(chǎn)一個sqlSession
SqlSession session = ssf.openSession();
//設置數(shù)據(jù)
User user = new User();
user.setU_username("新來的");
user.setU_password("123");
user.setU_sex("女");
user.setU_createTime(new Date());
user.setU_cid(12);
//操作數(shù)據(jù)庫
session.insert("UserMapper.insertUser", user);
//提交事務
//在MyBatis中,進行CRUD操作的時候,只有查找是不需要自己進行手動提交的,其他三種操作都需要進行手動提交。
session.commit();
}
進行測試。

4 修改用戶
UserMapper.xml中添加代碼如下:
<!-- 修改用戶 -->
<update id="updateUser" parameterType="com.test.bean.User" >
update user set u_username = #{u_username} where u_id = #{u_id}
</update>
測試類HelloMyBatis.java中添加代碼如下:
@Test
//修改用戶
public void Test4() throws IOException {
String resource = "sqlMapConfig.xml";
//讀取配置文件
InputStream in = Resources.getResourceAsStream(resource );
//需要sqlSessionFactoryBulider
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//創(chuàng)建sqlSessionfactory
SqlSessionFactory ssf = ssfb.build(in);
//生產(chǎn)一個sqlSession
SqlSession session = ssf.openSession();
User user = new User();
user.setU_id(1);
user.setU_username("老大");
//操作數(shù)據(jù)庫
session.update("UserMapper.updateUser", user);
//提交事務
//在MyBatis中,進行CRUD操作的時候,只有查找是不需要自己進行手動提交的,其他三種操作都需要進行手動提交。
session.commit();
}
進行測試。

5 根據(jù)id刪除用戶
UserMapper.xml中添加代碼如下:
<!-- 根據(jù)id刪除用戶 -->
<delete id="deleteUserById" parameterType="Integer">
delete from user Where u_id = #{id}
</delete>
測試類HelloMyBatis.java中添加代碼如下:
@Test
//刪除用戶
public void Test5() throws IOException {
String resource = "sqlMapConfig.xml";
//讀取配置文件
InputStream in = Resources.getResourceAsStream(resource );
//需要sqlSessionFactoryBulider
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//創(chuàng)建sqlSessionfactory
SqlSessionFactory ssf = ssfb.build(in);
//生產(chǎn)一個sqlSession
SqlSession session = ssf.openSession();
//操作數(shù)據(jù)庫
session.delete("UserMapper.deleteUserById", 3);
//提交事務
//在MyBatis中,進行CRUD操作的時候,只有查找是不需要自己進行手動提交的,其他三種操作都需要進行手動提交。
session.commit();
}
進行測試。
