mybatis使用mapper代理
1.项目目录:
2.mybatis-config.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="users">
<environment id="users">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="19960215" />
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<mapper resource="User.xml" />
</mappers>
</configuration>
3.log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
4.User.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="club.jiajiajia.mybatis.dao.UserDao">
<!-- 查询单个数据 -->
<select id="getUser" parameterType="string" resultType="club.jiajiajia.mybatis.entity.User">
select * from users where email = #{email}
</select>
<!-- 查询多个数据(模糊查询) -->
<select id="getUserByName" parameterType="string" resultType="club.jiajiajia.mybatis.entity.User">
select * from users where username like #{value}
</select>
<!-- 添加数据 -->
<insert id="insertUser" parameterType="club.jiajiajia.mybatis.entity.User">
insert into users(email,username,password,sex) value(#{email},#{userName},#{password},#{sex})
</insert>
<!-- 删除数据 -->
<insert id="delUserByEmail" parameterType="string">
delete from users where email=#{value}
</insert>
<!-- 更新数据 -->
<insert id="updateUserByEmail" parameterType="club.jiajiajia.mybatis.entity.User">
update users set sex=#{sex} where email=#{email}
</insert>
</mapper>
5.UserDao.java
package club.jiajiajia.mybatis.dao;
import java.util.List;
import club.jiajiajia.mybatis.entity.User;
public interface UserDao{
public User getUser(String email);
public List<User> getUserByName(String name);
public void delUserByEmail(String email);
public void updateUserByEmail(String email);
public void insertUser(User user);
}
User.java
package club.jiajiajia.mybatis.entity;
public class User {
private String email;
private String userName;
private String password;
private String sex;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(String email, String userName, String password, String sex) {
super();
this.email = email;
this.userName = userName;
this.password = password;
this.sex = sex;
}
@Override
public String toString() {
return "User [userName=" + userName + ", password=" + password + ", email=" + email + ", sex=" + sex + "]";
}
}
7.MybatisTest.java
package club.jiajiajia.mybatis.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 club.jiajiajia.mybatis.dao.UserDao;
public class MybatisTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//测试
UserDao userdao=session.getMapper(UserDao.class);
System.out.println(userdao.getUser("123@163.com"));
}
}
**************************************
.xml配置
1.namespace等于mapper接口的全类名
2.接口中的方法名和sql标签中的id相同
3.返回值的类型要对应
4.参数类型要对应