<------Mybatis框架------->
import com.model.QuerVo;
import com.model.User;
import com.model.VOUser;
import java.util.List;
//編寫持久層IUserDao接口
public interface IUserDao {
//查詢全部的信息
public List<User> findAll();
//根據id去查詢
public User finId(Integer id);
//添加信息:也就是保存信息
public int insert(User user);
//修改信息
public int update(User user);
//刪除學員的信息
public int delete(Integer stuId);
//模糊查詢
public List<User> findName(String username);
//聚合函數查詢總記錄數
public int totalcont();
//使用sum計算年齡的和
public int agesum();
//使用聚合函數計算出最大值max
public int max();
//使用聚合函數計算出最小值min
public int min();
//使用聚合函數計算出平均值avg
public int avg();
//傳遞的參數是包裝類對象
public List<User>findQuery(QuerVo querVo);
//查詢全部的信息: //實體類的屬性和表中的不同
public List<VOUser> finaAlll();
}
//標準的javaBean User實體類
package com.model;
import java.io.Serializable;
//編寫User實體類
public class User implements Serializable {
private static final long serialVersionUID = -8603850515164057242L;
private Integer id;
private String username;
private String age;
private String address;
public User(){
}
public User(Integer id, String username, String age, String address) {
this.id = id;
this.username = username;
this.age = age;
this.address = address;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
'}';
}
}
Resources配置文件
<?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="com.bdit.IUserDao">
<!--查詢全部的操做-->
<select id="findAll" resultType="com.bdit.model.User">
select * from user
</select>
<!--根據id去查詢-->
<select id="finId" resultType="com.bdit.model.User" parameterType="int">
select * from user where id=#{id}
</select>
<!--保存信息-->
<insert id="insert" parameterType="com.com.bdit.model.User">
<!--獲取新增用戶的id-->
<selectKey keyColumn="id" keyProperty="id" resultType="int">
select last_insert_id();
</selectKey>
insert into user(username,age,address)values(#{username},#{age},#{address})
</insert>
<!--修改信息-->
<update id="update" parameterType="com.com.bdit.model.User">
update user set username=#{username},age=#{age},address=#{address} where id=#{id}
</update>
<!--刪除信息:根據用戶的id去刪除-->
<delete id="delete" parameterType="com.com.bdit.model.User">
delete from user where id=#{id}
</delete>
<!--模糊查詢-->
<select id="findName" parameterType="java.lang.String" resultType="com.com.bdit.model.User">
select * from user where username like '%${value}%'
</select>
<!--使用聚合函數查詢表中的總記錄數-->
<select id="totalcont" resultType="java.lang.Integer">
select count(id) from user
</select>
<!--sum年齡的總和-->
<select id="agesum" resultType="java.lang.Integer">
select sum(age) from user;
</select>
<!--計算出年齡最大值-->
<select id="max" resultType="java.lang.Integer">
select max(age) from user;
</select>
<!--計算出最小值-->
<select id="min" resultType="java.lang.Integer">
select min(age) from user
</select>
<!--計算出平均值-->
<select id="avg" resultType="java.lang.Integer">
select avg(age) from user
</select>
<!--傳遞的對象是包裝類的對象-->
<select id="findQuery" resultType="com.com.bdit.model.User" parameterType="com.model.QuerVo">
select * from user where username like #{user.username}
</select>
<!---實體類的屬性和表中的不同時,是查詢不到結果的:-->
<!-- <select id="finaAlll" resultType="com.model.VOUser">-->
<!-- select * from user-->
<!-- </select>-->
<!--解決辦法:使用別名查詢:方法 1 -->
<!-- <select id="finaAlll" resultType="com.model.VOUser">-->
<!-- select id as stuId, username as username ,age as stuage, address as stuaddress from user-->
<!-- </select>-->
<!---實體類的屬性和表中的不同時:解決方法 2
type屬性:指定實體類的全限定名
id屬性:給一個惟一的標識,是給查詢select標籤引用的
id標籤:用於指定主鍵的字段
result標籤:用於指定非主鍵字段
property屬性;用於指定實體類的屬性字段
-->
<select id="finaAlll" resultMap="Map">
select * from user
</select>
<resultMap id="Map" type="com.model.VOUser">
<id column="id" property="stuId"/>
<result column="username" property="username"/>
<result column="age" property="stuage"/>
<result column="address" property="stuaddress"/>
</resultMap>
</mapper>
SqlMapConfig配置文件java
<?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> <!--配置Mybatis的環境--> <environments default="mysql"> <!--配置mysql的環境--> <environment id="mysql"> <!--配置事物的類型--> <transactionManager type="JDBC"/> <!--配置鏈接數據庫的信息,用的數據源是(鏈接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ab_wzy?serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--告知mybatis映射文件的位置--> <!--SQL映射文件mybatis是不認識的,全部須要告知--> <mappers> <!--查詢全部的方法--> <mapper resource="com/dao/IUserDao.xml"/> <!--基於註解的方式--> <!--<mapper class="com.bdit.IUserDao"/>--> </mappers> </configuration>
編寫Mybatis的測試類mysql
package com.bdit; import com.model.QuerVo; import com.model.User; import com.model.VOUser; 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.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; //編寫Mybatis測試類 public class mybatisTest2 { private InputStream input; private SqlSessionFactoryBuilder builder; private SqlSessionFactory factory; private SqlSession session; private IUserDao userDao; @Test //查詢全部的信息 public void findAll(){ List<User>list=userDao.findAll(); for(User user:list){ System.out.println(user); } } @Test //根據id去查詢 public void findId(){ User user=userDao.finId(2); System.out.println(user); } @Test //添加信息:保存 public void insert(){ User user=new User(); user.setUsername("劉備"); user.setAge("37"); user.setAddress("三國"); int i=userDao.insert(user); if(i>0){ System.out.println("添加成功"); }else{ System.out.println("添加失敗"); } System.out.println("獲取新增用戶的id"+user.getId()); } //修改學員的信息 @Test public void update(){ User user=userDao.finId(6); user.setUsername("關羽"); user.setAge("23"); user.setAddress("三國"); int i=userDao.update(user); if(i>0){ System.out.println("修改爲功"); }else{ System.out.println("修改失敗"); } } //刪除學員的信息 @Test public void delete(){ int i=userDao.delete(7); if(i>0){ System.out.println("刪除成功"); }else{ System.out.println("刪除失敗"); } } //模糊查詢 @Test public void findName(){ List<User>list=userDao.findName("wen"); for(User user:list){ System.out.println(user); } } //使用聚合函數查詢表中的總記錄數 @Test public void totalcount(){ int i=userDao.totalcont(); System.out.println("總記錄數"+i); } //使用聚合函數計算年齡的總和 @Test public void agesum(){ int i=userDao.agesum(); System.out.println("年齡的總和"+i); } //使用聚合函數計算出年齡最大值 @Test public void max(){ int i=userDao.max(); System.out.println("年齡最大的"+i); } //使用聚合函數就算出年齡最小值 @Test public void min(){ int i=userDao.min(); System.out.println("年齡最小的"+i); } //使用聚合函數計算出年齡平均值 @Test public void avg(){ int i=userDao.avg(); System.out.println("平均年齡"+i); } //傳遞的類型是包裝類時 @Test public void findQuery(){ QuerVo querVo=new QuerVo(); User user=new User(); user.setUsername("%李%"); querVo.setUser(user); List<User>list=userDao.findQuery(querVo); for(User user1:list){ System.out.println(user1); } } //實體類的屬性和表中的不同 @Test public void finaAlll(){ VOUser voUser=new VOUser(); List<VOUser>list=userDao.finaAlll(); for(VOUser user1:list){ System.out.println(user1); } } @Before //封裝好的數據,初始化時加載 public void init()throws IOException { //1 、 讀取配置文件-->SqlMapConfig核心的配置文件 input = Resources.getResourceAsStream("SqlMapConfig.xml"); //二、建立SqlSessionFactoryBuilder構建者的對象。 builder = new SqlSessionFactoryBuilder(); // 三、使用構建者對象建立工廠對象:SqlSessionFactory factory = builder.build(input); //四、使用SqlSessionFactory對象建立SqlSession對象 session = factory.openSession(); //五、使用SqlSession對象建立Dao接口的代理對象 userDao = session.getMapper(IUserDao.class); } @After public void destory()throws IOException { //提交事務 session.commit(); //關閉釋放資源 session.close(); input.close(); } }