<------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(); } }