#Mybatis CRUD(基于代理)
基本结构:
配置文件:1.SqlMapconfig 用于配置相关环境的属性,数据库的类型,以及数据库的名称密码等。
标签中 是具体的dao的配置文件的全限定名,用于加载sql语句。其中resource指代使用xml配置的方式,class指代使用注解配置的方式。
<configuration> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com\itheima\dao\IUserDao.xml"></mapper> </mappers> </configuration>
User:用户类,与数据库中的表是对应关系。类中的属性均为表中对应的属性。属性对应时属性名称尽量保持一致。
package com.itheima.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; 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 getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", address='" + address + '\'' + ", sex='" + sex + '\'' + ", birthday=" + birthday + '}'; } }
Dao:数据实现接口,位于业务逻辑和数据库层之间。是一个接口用于定义可以对数据库进行的相关操作
public interface IUserdao { List<User> findAll(); void saveUser(User user); void updateUser(User user); void deleteUser(Integer userId); User findById(Integer userId); List<User> findByName(String userName); int findTotal(); List<User> findByVo(QueryVo queryVo);//由多个对象组成查询条件进行查询 }
IUserDao.xml基于代理方式实现对数据库操作的配置文件。包含了sql语句和Userdao中的对应关系,实现java方法到sql语句的转换,以及数据的封装拆装操作
<mapper namespace="com.itheima.dao.IUserdao"> <select id="findAll" resultType="com.itheima.domain.User"> select *from user; </select> <insert id="saveUser" parameterType="com.itheima.domain.User"> insert into user (username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday}); </insert> <update id="updateUser" parameterType="com.itheima.domain.User"> update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}; </update> <delete id="deleteUser" parameterType="Integer"> delete from user where id=#{uid}; </delete> <select id="findById" parameterType="Integer" resultType="com.itheima.domain.User"> select * from user where id=#{id}; </select> <select id="findByName" parameterType="String" resultType="com.itheima.domain.User"> select *from user where username like#{name}; </select> <select id="findTotal" resultType="int"> select count(id) from user ; </select> <!-- 根据query条件查询用户--> <select id="findByVo" parameterType="com.itheima.domain.QueryVo" resultType="com.itheima.domain.User"> select *from user where username like#{user.username}; </select> </mapper>
select update等标签对应于mysql中的select update 等语句,parameterType代表参数的类型,resultType代表返回值类型,非基本类型的类需要制定类的全限定名。没有返回值和参数时,对应标签省略。