1、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>
<properties resource="jdbc.properties"></properties>
<typeAliases>
<typeAlias type="com.blb.dto.TUser" alias="user"></typeAlias><!--设置单个别名-->
<package name="com.blb.dto"/><!--给包下所有类起别名,默认别名为首字母小写-->
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--引入带sql的mapper文件-->
<mappers>
<mapper resource="com/blb/mapper/User-Mapper.xml"></mapper>
<mapper resource="com/blb/mapper/Type-Mapper.xml"></mapper>
</mappers>
</configuration>
2、jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:6666/haha
username=root
password=123456
mssql.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
mssql.url=jdbc:sqlserver://localhost:1433;DatabaseName=haha
mssql.username=sa
mssql.password=1234
3、mapper.xml与mapper类
User-Mapper.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="com.blb.mapper.TUserMapper">
<select id="selectUserById" parameterType="integer" resultType="uuser">
select * from t_user where id=#{sid}
</select>
<!--把插入的数据自增的主键传给id,若insert加keyProperty则会被selectKey覆盖-->
<insert id="addUser" parameterType="user" >
<selectKey keyProperty="id" order="AFTER" resultType="int">
select last_insert_id()
</selectKey>
insert into t_user(username,password) values (#{username},#{password})
</insert>
<!--把插入的数据自增的主键传给id-->
<insert id="insertUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">
<!--把不主键自增的值传给id
<selectKey keyProperty="id" order="BEFORE" resultType="integer">
select max(id)+1 from t_user
</selectKey>
-->
insert into t_user(username,password) values (#{username},#{password})
</insert>
<delete id="deleteUser" parameterType="integer">
delete from t_user where id=#{sid}
</delete>
<update id="updateById" parameterType="user">
update t_user set username=#{username},password=#{password} where id=#{id}
</update>
<select id="selectUserByPage" parameterType="map" resultType="user">
select * from t_user limit #{start},#{end}
</select>
<select id="selectCount" resultType="java.lang.Long">
select count(1) from t_user
</select>
</mapper>
TUserMapper类:
package com.blb.mapper;
import com.blb.dto.TUser;
import java.util.List;
import java.util.Map;
public interface TUserMapper {
public void insertUser(TUser user);
public void deleteUser(int id);
public void updateById(TUser user);
public TUser selectUserById(int id);
public List<TUser> selectUserByPage(Map<String,Object> param);
public long selectCount();
}
Type-Mapper.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="com.blb.mapper.TTypeMapper">
<!--表的字段映射到想类的属性-->
<resultMap id="type" type="tType">
<id property="tId" column="t_id"></id>
<result property="tName" column="t_name"></result>
<result property="pid" column="pid"></result>
<result property="tDesc" column="t_desc"></result>
<!--单个-->
<association property="tUser" select="queryTypeBySid" column="sid"></association>
<!--集联多个,根据pid=t_id用到queryTypeByPid再查一次返回types对象,queryTypeByPid方法本身也会映射给type-->
<collection property="types" select="com.blb.mapper.TTypeMapper.queryTypeByPid" column="t_id">
</collection>
</resultMap>
<select id="queryTypeBySid" parameterType="int" resultType="tUser">
select * from t_type where sid=#{sid}
</select>
<!--先查出tid=0的信息,映射给上面type-->
<select id="queryTypeByTid" parameterType="int" resultMap="type">
select * from t_type where t_id=#{tid}
</select>
<select id="queryTypeByPid" parameterType="int" resultMap="type">
select * from t_type where pid=#{pid}
</select>
</mapper>
TypeMapper:
package com.blb.mapper;
import com.blb.dto.TType;
import java.util.List;
public interface TTypeMapper {
public List<TType> queryTypeByPid(int pid);
public TType queryTypeByTid(int tid);
}
4、pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blb</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<name>mybatis</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
</dependencies>
<build>
<!--把java文件下所有的.xml文件加载-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>