Mybatis_crud
* 通常狀況下鏈接數據庫的信息最好單獨寫在配置文件中,這樣用戶修改起來方便。
- 在類路徑下新建一個 jdbc.properties文件,配置鏈接數據庫所需信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456
- 而後在Mybatis的核心配置文件中引入該配置文件
- 而後在屬性值裏寫 ${配置文件中值得key}* 兩個配置文件的做用
- mybatis-3-config.dtd Mybatis核心配置文件XML的代碼提示
- mybatis-3-mapper.dtd SqlMapper sql配置文件XML的代碼提示
- 這兩個文件有網絡的狀況下是自動配置的,若是沒有網絡的話須要下載之後再IDEA裏配置一下。
* Sql配置文件中的各類屬性的做用
- id屬性: id具備惟一性,表明了本條sql語句,id用來傳給Java程序,就表明了本條SQL語句
- resultType屬性: 告訴Mybatis所查詢出的數據最終查詢出數據後所要封裝成的類型,要寫全類名。
- AS關鍵字: 實體類的屬性名和數據庫表中的字段名是怎麼匹配的呢? 須要經過SQL語句的 AS關鍵字,給數據庫中字段名取別名,使數據庫中的字段名和實體類中的屬性名相一致
- Mybatis中的Sql語句佔位符不能使用問號,必須使用 #{} , 大括號中寫javabean的屬性名
- 當一個Sql語句的佔位符只有一個的時候佔位符 #{能夠隨意編寫},Mybatis自動賦值。
- parameterType屬性是用來給SQL語句的佔位符傳值的,告訴Mybatis所要傳給佔位符的值是什麼類型的數據
- parameterType=「簡單類型」的時候,parameterType屬性能夠省略不寫。
- javabean實體類 給佔位符傳值的時候,程序員須要告訴Mybatis javabean的哪一個屬性傳給哪一個佔位符,這就要保證屬性名和數據庫表中的列名保持一致。
* 插入數據(insert)
- Sql映射文件 SqlMapper.xml
insert into t_userinfo(username,email,userpwd)values(#{userName},#{userEmail},#{userPwd});- java程序
//insert操做,第一個參數是sql語句id,第二個參數是Object類型的,所須要插入數據的類型。
int count = sqlSession.insert("addDataForUserSql",user); //返回值表明影響數據庫表幾行數據
System.out.println(count);
* 插入更新修改(updata)
- Sql映射文件 SqlMapper.xml
update t_userinfo set userpwd=#{userPwd} where username=#{userName};- java程序
//update語句
int count = sqlSession.update("updateDataForUserSql", user);
System.out.println(count);
* 查詢數據(select)
- Sql映射文件 SqlMapper.xml
select username,email,userpwd from t_userinfo where username=#{userName};select * from t_userinfo;- java程序
//select 語句 查詢一條數據
Object userResult = sqlSession.selectOne("getDataForUserSql","Morty");
System.out.println(userResult);
// select 查詢全部數據
ListuserList = sqlSession.selectList("getDataForAllUserSql");
for(User user1:userList){
System.out.println(user1);
}
* 刪除數據(delete)
- Sql映射文件 SqlMapper.xml
delete from t_userinfo where username=#{username};- java程序
int count = sqlSession.delete("delDataForUserSql","Morty"); // 直接傳參
System.out.println(count);